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();
不只在两者都提供相同的输出时才调用?
可能的正确答案是什么?