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投给超类和呼叫超载方法