1
abstract class A {
int met(A a) {
return 0;
}
int met(B b) {
return 1;
}
int met(C c) {
return 2;
}
}
class B extends A {
int met(A a) {
return 3;
}
int met(B b) {
return 4;
}
int met(C c) {
return 5;
}
}
class C extends B {
int f() {
return ((A)this).met((A)this);
}
}
public class teste {
public static void main(String args[]) {
C x = new C();
System.out.println(x.f());
}
}
該程序將返回3,我期待0.爲什麼方法f中的第一個鑄造什麼都不做,第二個工作?是否因爲在A和B類中met方法被重載並因此使用靜態綁定?Java投給超類和呼叫超載方法