इसे इंस्टेंस प्रारंभकर्ता कहा जाता है। प्रारंभकर्ता में कोड के बाद सुपर क्लास कन्स्ट्रक्टर और पर कॉल शेष कन्स्ट्रक्टर कोड से पहले डाला गया है।
किसी भी कन्स्ट्रक्टर का पहला ऑपरेशन एक सुपर क्लास कन्स्ट्रक्टर का आह्वान करना है। यदि एक निर्माता को स्पष्ट रूप से कहा जाता है, super(...)
, निर्दिष्ट कन्स्ट्रक्टर का उपयोग किया जाता है। यदि कोई कन्स्ट्रक्टर स्पष्ट रूप से लागू नहीं किया गया है, तो सुपर क्लास में डिफ़ॉल्ट कन्स्ट्रक्टर (बिना तर्क के) का आह्वान किया जाता है। यदि ऐसा कोई कन्स्ट्रक्टर मौजूद नहीं है, तो यह एक संकलित समय त्रुटि है।
इस स्पष्ट या निहित रचनाकार आमंत्रण के बाद, उदाहरण प्रारंभकर्ताओं को स्रोत कोड में दिखाई देने के क्रम में बुलाया जाता है (हां, आपके पास एक से अधिक प्रारंभकर्ता हो सकते हैं)।
समझाने के लिए, इस कार्यक्रम चलाने प्रिंट
Another constructor
Init 1
Init 2
Test constructor
class Another {
Another() { System.out.println("Another constructor"); }
}
class Test extends Another {
public static void main(String[] args) { new Test(); }
{ System.out.println("Init 1"); }
Test() { System.out.println("Test constructor"); }
{ System.out.println("Init 2"); }
}
सबसे अधिक देखा आवेदन initalization "double brace initialization" idiom, जहां एक गुमनाम आंतरिक वर्ग परिभाषित किया गया है में है, और एक उदाहरण बनाया है और एक ही बार में कॉन्फ़िगर किया गया है।
JButton popupButton = new JButton(new AbstractAction("Popup") {
{
putValue(Action.SHORT_DESCRIPTION, "Popup a dialog");
}
@Override
public void actionPerformed(ActionEvent evt)
{
popup();
}
});
यह यदि आप कई निर्माताओं है, और हर निर्माता में कुछ पैरामीटर कम प्रारंभ करने की आवश्यकता उपयोगी हो सकता है: यहाँ स्विंग प्रोग्रामिंग से एक बहुत ही आम उदाहरण है। इसे प्रारंभिक ब्लॉक में लगाया जा सकता है।
मैं इस बारे में थोड़ी देर के लिए सोच रहा था, मुझे याद है कि यह कुछ समय पहले देखा गया था ... किसी को पता है कि इस संरचना को क्या कहा जाता है? – SimonT
इसे "प्रारंभकर्ता ब्लॉक" कहा जाता है। यह वास्तव में बस हर कन्स्ट्रक्टर में कॉपी किया गया है। – wchargin
यह प्रश्न डुप्लिकेट प्रश्न हो सकता है: http://stackoverflow.com/questions/16128076/instance-initialization-block-and-subclasses –