के मान लेते हैं कि हम एक वर्ग है:बेनामी प्रारंभ
public class SomeClass {
protected SomeClass() {
}
}
MainClass
में अलग पैकेज में स्थित मैं दो पंक्तियों पर अमल करने की कोशिश की:
public static void main(String[] args) {
SomeClass sac1 = new SomeClass();
SomeClass sac2 = new SomeClass() {};
}
वजह से protected
निर्माता, में दोनों मामलों में मैं प्रोग्राम विफल होने की उम्मीद कर रहा था। मेरे आश्चर्य के लिए, अनाम प्रारंभिकता ठीक काम किया। क्या कोई मुझे समझा सकता है कि प्रारंभिकरण की दूसरी विधि ठीक क्यों है?
मेरे आश्चर्य की बात है, वही बात तब होती है जब आप एक ऐसे कन्स्ट्रक्टर का उपयोग करते हैं जिसमें तर्क होता है। इस मामले में मुझे लगता है कि आपकी व्याख्या अब खड़ी नहीं है। – Andrei
@Andrei मैंने पैरामीटर/तर्क का उल्लेख नहीं किया। वे अभिगम्यता जांच में कोई भूमिका निभाते हैं। –
एक्सेसिबिलिटी चेक में नहीं, नहीं। लेकिन अगर आपके पास पैरा के साथ केवल संरक्षित कन्स्ट्रक्टर वाला वर्ग है, तो आपको बच्चे से पैरामीटर के साथ अपने कन्स्ट्रक्टर को स्पष्ट रूप से आमंत्रित करना होगा। मैं कह रहा था कि यह नियम गुमनाम वर्गों के लिए छोड़ दिया गया प्रतीत होता है। – Andrei