पाठ 17 / 38
कंस्ट्रक्टर
कंस्ट्रक्टर से ऑब्जेक्ट स्टेट इनिशियलाइज़ करें, अंतर्निहित no-arg डिफ़ॉल्ट पर भरोसा करें, और this(...) से उसी क्लास के अन्य कंस्ट्रक्टर से चेन करें।
कंस्ट्रक्टर परिभाषित करना
कंस्ट्रक्टर का नाम क्लास जैसा, कोई रिटर्न टाइप नहीं। न लिखें तो Java डिफ़ॉल्ट देता है। this(...) उसी क्लास का दूसरा कंस्ट्रक्टर बुलाता है।
public class Point {
private final int x, y;
public Point(int x, int y) { this.x = x; this.y = y; }
public Point() { this(0, 0); } // delegate
}ओवरलोडेड कंस्ट्रक्टर
मेथड की तरह कंस्ट्रक्टर भी ओवरलोड हो सकते हैं — एक ही क्लास नाम पर अलग-अलग पैरामीटर सूचियों के साथ। कॉलर जो रूप उपयुक्त हो वह चुनता है।
public class Rectangle {
private final double width, height;
public Rectangle(double width, double height) {
this.width = width; this.height = height;
}
public Rectangle(double side) { // square
this(side, side);
}
}
new Rectangle(4, 5);
new Rectangle(3); // 3x3 squareइनिशियलाइज़ेशन क्रम
ऑब्जेक्ट बनते समय क्रम है: फ़ील्ड के डिफ़ॉल्ट मान → इंस्टेंस इनिशियलाइज़र व फ़ील्ड इनिशियलाइज़र (सोर्स क्रम में) → कंस्ट्रक्टर बॉडी। सबक्लास में सुपरक्लास का कंस्ट्रक्टर हमेशा पहले चलता है (न बुलाने पर भी अंतर्निहित super())।