我是 Java 世界的新手,我在弄清楚 Java 如何决定在存在多态性时调用哪个方法时遇到了一些问题。你能帮我弄清楚这个例子是如何工作的吗?我尝试了代码并看到了结果。我更感兴趣的是为什么它会这样工作。
class A {
void redef(A a) { System.out.println("[A]"); }
}
class B extends A {
//@Override
void redef(B b) { System.out.println("[B]"); }
}
class C extends B {
}
public class Surcharge {
static void surcharge(A a) { System.out.println("[A]"); }
static void surcharge(B b) { System.out.println("[B]"); }
public static void main(String[] argv) {
A a = new A() ;
B b = new B() ;
A ab = new B();
C c = new C();
ab.redef(c); //?
surcharge(a); //?
surcharge(b); //?
surcharge(c); //?
surcharge(ab); //?
}
}