inheritance - Static variables in Java -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 4 जवाब
वर्ग अभिभावक { सार्वजनिक स्थिर स्ट्रिंग sName = "माता-पिता"; स्थिर {System.out.println ("अभिभावक स्थिर ब्लॉक कहा जाता है"); SName = "माता-पिता"; }} वर्ग बाल अभिभावक {सार्वजनिक स्थैतिक स्ट्रिंग sName1; स्थिर {System.out.println ("बच्चे को स्थिर ब्लॉक कहा जाता है"); SName = "बाल"; SName1 = "बाल"; }} सार्वजनिक वर्ग विरासत {सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {System.out.println (Child.sName); Println (Parent.sName); }}
ऊपर कोड स्निपेट में मेरे पास एक '
जनक ' वर्ग और ''
बाल वर्ग है जो माता-पिता को विस्तारित करता है I मैं इस तथ्य को समझता हूं कि स्थिर चर को माता-पिता और उसके सभी उप-वर्गों के बीच साझा किया जाता है जब मैं उपरोक्त कार्यक्रम चलाता हूं तो आउटपुट होता है
अभिभावक अभिभावक माता पिता को नामित स्थैतिक ब्लॉक
मुझे आश्चर्य है कि बच्चे के स्थैतिक ब्लॉक को निष्पादित करने के बाद भी निष्पादित नहीं किया जाता है '
println (Child.sName); '। मुझे यकीन नहीं है कि क्यों केवल अभिभावक वर्ग लोड हो जाता है और बाल वर्ग नहीं। अब जब मैं
मुख्य () फ़ंक्शन को बाल वर्ग के नीचे दिखाए अनुसार संशोधित किया जाता है।
सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] args) {System.out println (Child.sName); Println (Parent.sName); Println (Child.sName1); // sName को बाल वर्ग में घोषित किया गया है। Println (Parent.sName); }
अब आउटपुट नीचे दिखाया गया है और जैसा अपेक्षित है अब बाल वर्ग को लोड किया जाना है क्योंकि हम स्थिर वैरिएबल sName1 के लिए संदर्भ बना रहे हैं जिसे बाल वर्ग में घोषित किया गया है।
अभिभावक अभिभावक माता पिता माता-पिता के बच्चे को बुलाए गए स्थिर ब्लॉक कोड>
स्थिर वैरिएबल '
sName ' के पास अब '
बाल ' इसका मान है मेरा प्रश्न यहां बताया गया है कि मुख्य वर्ग में संदर्भ संशोधित करने से पहले ही बाल वर्ग को संदर्भ में बनाने के बाद भी लोड हो जाता है?
कृपया सलाह दें। < P>
से
एक वर्ग या इंटरफ़ेस प्रकार टी को किसी भी एक की पहली घटना से ठीक पहले आरंभ किया जाएगा निम्नलिखित वर्ग:
- टी एक वर्ग है और टी का एक उदाहरण बनाया जाता है।
- टी एक वर्ग है और टी द्वारा घोषित एक स्थिर विधि लागू है। < Li> टी द्वारा घोषित एक स्थिर क्षेत्र को असाइन किया गया है।
- टी द्वारा घोषित एक स्थैतिक फ़ील्ड का उपयोग किया जाता है और फ़ील्ड एक स्थिर चर (§ 4.12.4) नहीं है।
- टी एक शीर्ष-स्तरीय वर्ग है, और टी के भीतर नीडिंत नेस्टेड स्टेटमेंट (§ 14.10) निष्पादित होता है।
पहले मामले में (प्रिंट स्टैमेंट का पहला सेट) आपके पास केवल
sName चर का उपयोग किया जा सकता है, और यह
माता-पिता कक्षा से संबंधित है, इसलिए बाल वर्ग को आरम्भ नहीं किया गया था।
वह प्रिंट स्टेटमेंट का दूसरा सेट है, आप
sName1 चर का उपयोग कर सकते हैं, जो कि
बाल वर्ग से संबंधित है, इसलिए इस समय, बाल वर्ग आरंभ किया गया था।
इससे कोई फर्क नहीं पड़ता, यहां तक कि आपने
Child.SName तक पहुंच नहीं ली है, यह वास्तव में
Parent.sName को संदर्भित करता है, इसलिए यह
बच्चे < / कोड> वर्ग।
Comments
Post a Comment