2013-01-25 52 views
5

Was ist das Beispiel für den indirekten Zugriff auf private Member der Superklasse aus der Subklasse?Zugriff auf private Mitglieder einer Superklasse

Eine verschachtelte Klasse hat Zugriff auf alle privaten Mitglieder der umschließenden Klasse - beide Felder und Methoden. Daher hat eine öffentliche oder geschützte verschachtelte Klasse, die von einer Unterklasse geerbt wird, indirekten Zugriff auf alle privaten Mitglieder der Oberklasse .

Zitat von http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

Antwort

4

Im Angebot sprechen wir über „verschachtelte“ Klasse

hier ist ein Beispiel dafür, wie eine innere Klasse private Felder der äußeren Klasse zugreifen können.

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(); 
} 

}

Schließlich, wenn Sie eine Klasse mit dem Innerclass erweitern, werden sie auch auf die privaten Felder Zugriff der OuterClass wenn Ihr Innerclass öffentlichen oder geschützten

0

Es ist anzunehmen, (aber die Compiler es nicht erzwingen nicht nur warnt), dass ein private Verfahren wird von einer public, protected oder Standardmethode am Ende verwendet wurde (andernfalls ist nutzlos).

So kann die abgeleitete Klasse „indirekt“ nennen sich die private Methode durch die Methode public, protected oder Standard-Aufruf, der die private Methode endet aufrufen.

+0

in diesem Fall So sei es nicht von einer regulären Klasse unterscheidet sich Zugang zu Methoden der öffentlichen Modifikator aufweist, wenn kann –

+0

Diese Art des Zugriffs subclassed durch getan werden andere Klassen auch. Meine Frage bezieht sich auf den konkreten Angebotsfall. –

0

Ja, wir können einen privaten Zugang Mitglieder einer Oberklasse in der Kindklasse durch die öffentliche Methode der Oberklasse, die aus der Bezugsvariablen der Kindklasse aufgerufen werden kann, die die Bezugs-ID der Kindklasse trägt. zum Beispiel: -

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(); 
    } 
} 

wird der Ausgang 10

Verwandte Themen