2013-01-25 13 views
5

सबक्लास से सुपरक्लास के निजी सदस्य को अप्रत्यक्ष पहुंच का उदाहरण क्या है?सुपरक्लास के निजी सदस्यों तक पहुंच

एक नेस्टेड क्लास के पास कक्षा-दोनों फ़ील्ड और विधियों के सभी निजी सदस्यों तक पहुंच है। इसलिए, उप-वर्ग द्वारा विरासत में प्राप्त एक सार्वजनिक या संरक्षित नेस्टेड वर्ग सुपरक्लास के सभी निजी सदस्यों पर अप्रत्यक्ष पहुंच है।

उद्धरण http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

उत्तर

4

बोली में, हम के बारे में "नेस्टेड" वर्ग

बात यहाँ कैसे एक आंतरिक वर्ग बाहरी वर्ग के निजी क्षेत्रों तक पहुँच सकते हैं का एक उदाहरण है।

class OuterClass { 
private int x = 7; 

public void makeInner(){ 
    InnerClass in = new InnerClass(); 
    in.seeOuter(); 
} 
class InnerClass { 
    public void seeOuter() { 
     System.out.println("Outer x is " + x); 
    } 
} 
public static void main(String[] args) { 
    OuterClass.InnerClass inner = new OuterClass().new InnerClass(); 
    inner.seeOuter(); 
} 

}

अंत में, यदि आप InnerClass के साथ एक वर्ग का विस्तार, वे भी OuterClass के निजी क्षेत्रों का उपयोग करेंगे, तो आपके InnerClass सार्वजनिक या सुरक्षित है

0

से यह माना जा करने के लिए (लेकिन संकलक यह लागू नहीं करता है, केवल चेतावनी दी है) है, कि एक private विधि एक public, protected या डिफ़ॉल्ट विधि द्वारा किया जा रहा खत्म हो जाएगा (अन्यथा यह व्यर्थ का)।

तो, विस्तारित वर्ग 0 अप्रत्यक्ष रूप से private विधि को public, protected या डिफ़ॉल्ट विधि को कॉल करने वाली डिफ़ॉल्ट विधि को कॉल करके कॉल कर सकती है।

+0

तो उस मामले में यह जनता के संशोधक तरीकों के लिए उपयोग होने एक नियमित रूप से वर्ग से अलग नहीं है जब –

+0

subclassed पहुँच उस प्रकार से किया जा सकता अन्य वर्ग भी। मेरा प्रश्न विशिष्ट उद्धरण मामले के बारे में है। –

0

हाँ, हम निजी उपयोग कर सकते हैं सुपर क्लास की सार्वजनिक विधि के माध्यम से बाल वर्ग में एक सुपरक्लास के सदस्य जिन्हें बाल वर्ग के संदर्भ चर से बचने वाले बाल वर्ग के संदर्भ चर से बुलाया जा सकता है। उदाहरण के लिए : -

class Base 
{ 
    private int x=10; 

    void show() 
    { 
     System.out.println(x); 
    } 
} 

class Child extends Base 
{ 

    public static void main(String... s)// public static void main(String[] args) 
    {  
     //rom jdk 1.7 main can be defined like above 
     Child c=new Child(); 
     c.show(); 
    } 
} 

उत्पादन होगा 10

संबंधित मुद्दे