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 overridedMethod(B b)
- 因为 B
是 A
的子类,而 A
是 Object
的子类,因此 B
比 A 都更具体
和对象
。
关于java - 该继承程序在执行时给出输出 '2' 。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44238979/