पाठ 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())।