0
class HelloWorld{

    public static void main(String []args){
        A j = new B();
        B k = new B();

        System.out.println(j.foo(k));
    }
}

class A {
public int foo(A p) { return 1; }
}
class B extends A {
public int foo(A p) { return 2; }
public int foo(B p) { return 3; }
}

したがって、印刷される出力は 2 になります。これがどのように行われるのかわかりません。jオブジェクトはコンパイルされた形式とは見なされませんかA? それでも、コンパイル時と実行時の両方でクラスのクラスであっても、型パラメーターを使用するクラスBバージョンを実行します。これはなぜですか?fooAkB

4

0 に答える 0