Полиморфизм и методы переопределения в Java - PullRequest
0 голосов
/ 17 марта 2019

Я понимаю, что полиморфизм применяется только к нестатическим и неконечным методам класса.

Но возьмите этот пример:

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и что каждый Dog является Animal.

Программа понимает, что d является объектом Dog, и поэтому вызывает метод play () из класса Dog, IGNORING тот факт, что он объявлен как Animal.

Но почему, по тому же принципу, программа не осознает, что d является объектом Dog, IGNORING объявление Animal?

Это то, что я пытаюсь понять.

...