Java

时间:2019-03-17 17:03:48

标签: java inheritance polymorphism override

我了解多态只适用于类的非静态和非最终方法。

但是举个例子:

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声明?

这是我在努力理解的东西。

0 个答案:

没有答案