java - How to let Subclass cover the inner class of the Class? -


<पूर्व> पैकेज tt; क्लास आउट {class इनर (शून्य प्रिंट) (System.out.println ("I anm inner1"); }} सार्वजनिक शून्य रन () {अंदरूनी = नए इनर (); प्रिंट में(); }} क्लास आउट 2 में विस्तार {class Inner {void print ()} {System.out.println ("I anm inner2"); }}} सार्वजनिक वर्ग की परीक्षा {/ ** * @ परम आर्ग्स * / सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {नया आउट2 (।) (रन); // 打印 i anm inner2}}

यह प्रोग्राम प्रिंट करता है ("I anm inner1") अब। मैं प्रोग्राम प्रिंट कैसे कर सकता हूं ("I anm inner2")?

आंतरिक वर्ग को कवर करने के बजाय आप आधार कक्षा में एक फैक्टरी विधि (ओवरराइड) को कवर कर सकते हैं, आप आउट2.इनर को आउट.इनर का विस्तार करना चाहिए

  class Out {class Inner {void print () {System.out Println ("I anm inner1"); }} सार्वजनिक इनर बनाइनइनर () {नई इनर रिटर्न); } सार्वजनिक शून्य रन () {आंतरिक = createInner () में; प्रिंट में(); }} क्लास आउट 2 विस्तारित करता है {वर्ग इनर आउट.इनर {शून्य प्रिंट () {System.out.println ("I anm inner2") का विस्तार करता है; }} सार्वजनिक आउट.इनर बनाइनइनर () {नई इनर रिटर्न); }}  

Comments