我了解多态只适用于类的非静态和非最终方法。
但是举个例子:
class Animal{
public void play(){
System.out.println("Play animal");
}
}
public class Dog extends Animal{
public void play(){
System.out.println("Play dog");
}
public void bark(){
System.out.println("Woof");
}
public static void main(String []args){
Animal d = new Dog();
d.play(); //Outputs "Play dog"
d.bark(); //ERROR
}
}
我知道d是Dog对象,每条狗都是动物。
程序意识到d是Dog对象,因此从Dog类中调用play()方法, IGNORING 是将其声明为Animal的事实。
但是,出于相同的原理,为什么程序没有意识到d是Dog对象, IGNORING ,Animal声明?
这是我在努力理解的东西。