public class PrivateOverride {
private void f() {
System.out.println("private f()");
}
}
public class Derived extends PrivateOverride {
public void f() { //this method is never run.
System.out.println("public f()");
}
}
public static void main(String[] args) {
// instantiate Derived and assign it to
// object po of type PrivateOverride.
PrivateOverride po = new Derived();
// invoke method f of object po. It
// chooses to run the private method of PrivateOveride
// instead of Derived
po.f();
}
}
このコードの出力はprivate f()
次のようになります。ここで疑問が湧いてきます。ポこれは派生クラスはプライベートメソッドを呼び出しますプライベートオーバーライドその基本クラスはどれですか?
ベストアンサー1
クラスで main メソッドを定義したためです。派生クラスに main メソッドを配置すると、そこでは表示されないPrivateOverride
ためコンパイルされません。.f()
クラス内の po.f() 呼び出しはPrivateOverride
ポリモーフィズムではありません。クラスf()
内の はであり、クラス内の はオーバーライドされないためです。PrivateOverride
private
f()
Derived