class Test {
public static void main(String[] args) {
Animal a = new Dog();
Dog d = new Dog();
d.makeNoise(); // output "Sub"
a.makeNoise(); // output "Sub" then what is use of calling this. why not call d.makeNoise() only.
}
}
abstract class Animal {
public void makeNoise() {
System.out.println("Super");
}
}
class Dog extends Animal {
@Override
public void makeNoise() {
System.out.println("Sub");
}
}
このトピックについて 15 分間のディスカッションを行いました (15 分は長すぎると思います) を使用して動的ポリモーフィズムがどのように達成されるかについてインタビュアーに説明しましたa.makeNoise();
が、それでも彼女は両方が同じ出力を与えると言いました。
a.makeNoise();
「Sub」を出力し、これを呼び出すのは何ですか。d.makeNoise() だけ
を呼び出さないのはなぜですか? インターフェイスにも行きましたが、サブクラス参照が同じ出力を提供している場合、なぜスーパークラス参照を使用するのかという疑問がありました。
インタビュアーの質問は、違い
a.makeNoise();
は何ですか?d.makeNoise();
両方が同じ出力を出している場合にのみ呼び出さないのはなぜですか?
可能な正解は何ですか?