Private Methoden Vererbung

Hier ist eine interessante code-snippet:

public class Superclass {

    public static void main (String[] args){
        Superclass obj = new Subclass();
        obj.doSomething(); #prints "from Superclass"
    }

    private void doSomething(){System.out.println("from Superclass");}
}

class Subclass extends Superclass {

    private void doSomething(){System.out.println("from Subclass");}

}

Ich weiß, dass Unterklassen Erben nicht die privaten Mitglieder des übergeordneten, aber hier obj verwaltet, eine Methode aufzurufen, die es sollte keinen Zugang haben. Zur compile-Zeit obj ist vom Typ Superklasse, so wird zur Laufzeit der Typ der Unterklasse.

Dies hat wahrscheinlich etwas mit der Tatsache zu tun, dass der Aufruf von doSomething() wird sich in der Treiber-Klasse, die passiert zu sein, seine eigene Klasse (und warum ist es möglich, zum aufrufen von doSomething() auf den ersten Platz).

Also die Frage hinausläuft, wie funktioniert obj haben Zugang zu einem privaten Mitglied seiner Eltern?

Es wäre interessant zu sehen, was passiert, wenn das Kind die Methode ist öffentlich. Ich habe es getan, er sagt: "von der Oberklasse" Interessant, wird es nicht überschrieben

InformationsquelleAutor Victor Cheung | 2013-01-18

Schreibe einen Kommentar