私はこのコードに2つの質問があります。混乱している "プライベートメソッドを上書きする"
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)関数fはオーバーライドpoの参照でどのように見えますか?
2)なぜ "private f()"の出力ですか?
しかし、サブクラスのオブジェクトを持つ参照は、スーパークラスのプライベートメソッドをどのように呼び出すことができますか?これはバグですか? –
いいえ、これはバグではありません。これは動作するはずです。 – Jesper
これは継承と遅延バインディングのルールに違反していません –