Что может полиморфизм сделать это наследство не может? [Дубликат]
На этот вопрос уже есть ответ:
В чем основная разница между наследованием и полиморфизмом? 15 ответов Представь, что у нас есть классAnimal
распространяется на три других класса:Dog
, Cat
, Bird
.
У этого класса животных естьtalk()
а такжеmove()
функция. Функция разговора выводит «Разговор животных», а функция перемещения выводит «Движение животных».
Для собаки это "Собака движется" и "Собака ест". ДляCat
а такжеBird
класс, эта разница параллельна «движению кота» и т. д.
Теперь из-за полиморфизма, если я сделаю
Animal charlietheBird = new Bird()
а потом позвони
charlietheBird.talk()
будет выводить
Птица разговаривает
потому что вывод определяется во время выполнения, так как компилятор знает, что Чарли является типомAnimal
классаBird
.
ТЕМ НЕ МЕНИЕ!
Я могу просто сделать
Bird charlietheBird = new Bird();
а потом звонюcharlietheBird.poop();
выдаст тот же результат, потому что метод был бы переопределен.