如何在这个java示例中使用多方法选择?

时间:2016-10-22 14:14:32

标签: java multimethod

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在编译和运行时都是foo类,它也使用A类型参数执行kB版本。为什么会这样?

0 个答案:

没有答案