我有以下代码
public class HelloWorld {
public void printData (Test t) {
System.out.println("Reached 1");
}
public void printData(NewTest t) {
System.out.println("Reached 2");
}
public static void main(String args[]) {
HelloWorld h = new HelloWorld();
h.printData(null);
}
}
我有两个简单的课程
class Test {
}
class NewTest extends Test {
}
我得到的输出是 Reached 2
为什么选择执行第二个函数而不是第一个函数?此外,当我通过创建另一个类 NewTest2 扩展 Test 和类似的 printData() 函数来尝试相同的代码时,它给了我编译时错误。是否有任何规则来选择必须执行哪个功能以及何时执行?