¿Qué puede hacer el polimorfismo que no puede hacer la herencia? [duplicar
Esta pregunta ya tiene una respuesta aquí:
Cuál es la principal diferencia entre herencia y polimorfismo? 15 respuestas Imagina que tenemos una claseAnimal
que se extiende a otras tres clases:Dog
, Cat
, Bird
.
sta clase de animales tiene unatalk()
ymove()
función. La función de conversación emite "Animal hablando" y la función de movimiento emite "Animal en movimiento".
Para un perro, esto es "Perro en movimiento" y "Perro comiendo". Para elCat
yBird
clase, esta diferencia es paralela "Gato en movimiento", etc.
Ahora, debido al polimorfismo, si lo hago
Animal charlietheBird = new Bird()
y luego llame a
charlietheBird.talk()
saldrá
Bird hablando
porque la salida se determina en tiempo de ejecución ya que el compilador sabe que Charlie es un tipo deAnimal
de la claseBird
.
¡¡SIN EMBARGO!
Simplemente puedo hacer
Bird charlietheBird = new Bird();
y luego llamando acharlietheBird.poop();
dará el mismo resultado, porque el método habría sido anulado.