Ich bin ein Student, Java zu lernen. Ich weiß, protected
bedeutet Zugriff von children
oder the same package
. Hier erben und überschreiben wir eine geschützte Methode. Und wenn die Basisklasse nach einer solchen Aktion ihre eigene Methode aufrufen will, ruft sie die neue überschriebene aus der Unterklasse auf. Ich habe das für eine Weile getestet und die Ausführungsreihenfolge mit Kommentaren markiert. Aber ich kann nicht verstehen, warum es nicht die Basismethode aufruft, wenn ich das aus dem Basisklassenkonstruktor herausrufe.Warum ruft der Aufruf einer Methode aus der Basisklasse die Child-Methode auf?
public class Solution {
public static void main(String[] args) {
new B(); // first
}
public static class A {
public A() {
initialize(); // third
}
protected void initialize() {
System.out.println("class A"); // we never go here
}
}
public static class B extends A {
public B() {
super(); // second
initialize(); // fifth
}
protected void initialize() {
System.out.println("class B"); // fourth, sixth
}
}
}
Das ist eine Aufgabe von einer Website ist, so dass im Grunde ist die Lösung Zugriffsmodifikator der initialize
Methode protected
-private
zu ändern. Aber ich verstehe immer noch nicht, warum das Problem passiert.
Ich denke, es ist nur Aufruf der überschriebenen Methode, weil Sie den Super von der Klasse aufrufen, die es überschreibt, so dass es immer diese Methode aus der B-Klasse verwenden wird? –
Das ist der springende Punkt beim Überschreiben ... –