次のコードがあります
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);
}
}
2つの単純なクラスがあります
class Test {
}
class NewTest extends Test {
}
私が得た出力は Reached 2です
最初の関数ではなく、2 番目の関数が実行のために選択されたのはなぜですか? また、Test と類似の printData() 関数を拡張する別のクラス NewTest2 を作成して同じコードを試したところ、コンパイル時エラーが発生しました。どの関数をいつ実行する必要があるかを選択する規則はありますか?