class A { }
class B extends A { }
class C extends B { }
public class MainClass {
static void overloadedMethod(A a) {
System.out.println("1");
}
static void overloadedMethod(B b) {
System.out.println("2");
}
static void overloadedMethod(Object obj) {
System.out.println("3");
}
public static void main(String[] args) {
C c = new C();
overloadedMethod(c);
}
}
该继承程序在执行时给出输出
2
。怎么样? 最佳答案
好吧,可以将类C
的实例传递给这三个overloadedMethod
方法中的任何一个,因此编译器选择其参数具有最特定类型的方法-static void overloadedMethod(B b)
-因为B
是该方法的子类。 A
是Object
的子类,因此B
比A
和Object
更具体。