派生クラスはどのようにして基本クラスのプライベートメソッドを呼び出すことができますか? 質問する

派生クラスはどのようにして基本クラスのプライベートメソッドを呼び出すことができますか? 質問する
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()内の はであり、クラス内の はオーバーライドされないためです。PrivateOverrideprivatef()Derived

おすすめ記事