public class Main {
static void method(A a){
System.out.print("one");
}
static void method(B b){
System.out.print("two");
}
static void method(Object obj){
System.out.print("three");
}
public static void main(String[] args) {
C c = new C();
method(c);
}
}
class A {}
class B extends A{}
class C extends B{}
您看到标题时,我认为它显示的是“三个”,但真正的答案是“两个”。有人可以向我解释吗?谢谢!
重载将解析为适用于该参数的最特定类型。在A
,B
和Object
中,适用于类型C
的引用的最特定类型是B
。因此将调用method(B)
。