अच्छा ... मुझे यह संदेह भी था (यही कारण है कि मैंने इस धागे की खोज की)। यह एक अच्छा सवाल हो सकता है।
लेकिन ...
एक दूसरे सोचा के बाद, चीजों को वास्तव में सरल से हमने सोचा है।
पैकेज-निजी विधि, एक पैकेज-निजी विधि है।
बकवास लगता है? परंतु ...
एक पैकेज-निजी विधि है, भले ही अपने वर्ग विरासत में मिला है, यह अभी भी एक पैकेज-निजी तरीका है।
यह अब और अधिक समझ बनाने करता है? एक और अधिक वर्बोज़ स्पष्टीकरण के लिए:
एक पैकेज-निजी विधि है, भले ही अपने वर्ग एक अधिक दिखाई उपवर्ग द्वारा विरासत में मिली है, यह अभी भी एक पैकेज-निजी तरीका है।
यदि सबक्लास एक ही पैकेज का है, तो पैकेज-निजी विधियों को भी विरासत में मिला है, लेकिन वे अभी भी पैकेज-निजी हैं।
यदि सबक्लास अलग-अलग पैकेज का है (यहां, हमें कुछ पैकेज-निजी विधियों के साथ माता-पिता को सार्वजनिक होने की आवश्यकता है), तो पैकेज-निजी विधियां विरासत में नहीं हैं (क्योंकि वे बिल्कुल दिखाई नहीं दे रहे हैं)।
ध्यान देने योग्य एक बिंदु, जो इस संदेह का कारण हो सकता है, कि सार्वजनिक वर्ग में पैकेज-निजी विधि अपने पैकेज के बाहर भी दिखाई नहीं दे रही है।
ऊपर पैकेज-निजी विधि के बारे में बताते हैं। और सार्वजनिक विधि का मामला वही है।
एक पैकेज-निजी वर्ग एक जघन उपवर्ग द्वारा विरासत में मिली है जब (एक ही पैकेज की, इस बहुत जरूरी है), अपने सार्वजनिक तरीकों सार्वजनिक तरीके के रूप में लिए गए हैं, और इस तरह वे एक जघन कक्षा में सार्वजनिक तरीकों बन जाते हैं।
ओपी उदाहरण में, foo()
और bar()
के रूप में एक पैकेज-निजी कक्षा में दोनों हैं, उनके दृश्यताएं, इस पल में पैकेज-निजी तक ही सीमित हैं, जब तक आगे कोड जोड़ रहे हैं (उदाहरण के लिए विरासत)।
आशा यह स्पष्ट (और सरल) पर्याप्त है।
पीएस the Java access control table
"सभी विधियों को निजी घोषित करना" पढ़ना चाहिए "सभी विधियों को पैकेज-प्राइवेट घोषित करना", और "संलग्न वर्ग" को "अन्य वर्ग" के रूप में घोषित करना चाहिए, लेकिन अन्यथा – Puce
@Puce +1, सही है, मैंने थोड़ा प्रश्न गलत तरीके से पढ़ा है। अब तय, धन्यवाद :-) –