O que o polimorfismo essa herança não pode? [duplicado
Esta pergunta já tem uma resposta aqui:
Qual é a principal diferença entre herança e polimorfismo? 15 respostas Imagine que temos uma classeAnimal
que se estende a três outras classes:Dog
, Cat
, Bird
.
Esta classe de animais tem umtalk()
emove()
função. A função talk produz "Animal talking" e a função move gera "Animal moving".
Para um cão, este é "Dog moving" e "Dog eating". Para oCat
eBird
class, essa diferença é paralela ao "movimento do gato" etc.
Agora, por causa do polimorfismo, se eu fizer
Animal charlietheBird = new Bird()
e ligue
charlietheBird.talk()
é saída
Bird talking
porque a saída é determinada em tempo de execução, pois o compilador sabe que charlie é um tipo deAnimal
da classeBird
.
CONTUDO!
Eu posso simplesmente fazer
Bird charlietheBird = new Bird();
e depois ligar paracharlietheBird.poop();
dará a mesma saída, porque o método teria sido substituído.