Ich habe zwei Fragen zu diesem CodeVerwirrend „eine private Methode außer Kraft setzen“
public class Override {
private void f() {
System.out.println("private f()");
}
public static void main(String[] args) {
Override po = new Derived();
po.f();
}
}
class Derived extends Override {
public void f() {
System.out.println("public f()");
}
}
/*
* Output: private f()
*/// :~
1) Wie ist Funktion f ist auf der Referenz von Aufschalten po sichtbar;
2) Warum wird ausgegeben "private f()"
Aber wie eine Referenz mit einem Objekt der Unterklasse eine private Methode einer Superklasse aufrufen kann ??? Ist das ein Fehler ??? –
Nein, das ist kein Fehler, das ist genau so, wie es funktionieren sollte. – Jesper
aber ist dies nicht gegen die Regeln der Vererbung und späte Bindung –