1. Ballenas y vacas
Aquí hay un hecho zoológico interesante: una vaca está mucho más cerca de una ballena que, por ejemplo, de un hipopótamo. Resulta que las vacas y las ballenas son parientes relativamente cercanos.

Mira aquí. Hablemos sobre el polimorfismo , otra herramienta muy poderosa de OOP . Tiene cuatro características.
2. La herencia no es una panacea
Imagina que has escrito una Cow
clase para un juego. Tiene muchos campos y métodos. Los objetos de esta clase pueden hacer varias cosas: caminar, comer y dormir. Las vacas también usan una campana que suena cuando caminan. Suponga que ha implementado todo en la clase hasta el más mínimo detalle.
Y luego llega tu cliente y dice que quiere lanzar un nuevo nivel de juego, en el que toda la acción tiene lugar en el mar, y el personaje principal es una ballena.
Comienzas a diseñar una Whale
clase y te das cuenta de que solo es ligeramente diferente de la Cow
clase. La lógica de ambas clases es muy similar y decides usar la herencia.

La Cow
clase es ideal para asumir el papel de la clase padre: tiene todas las variables y métodos necesarios. Todo lo que tenemos que hacer es darle a la ballena la capacidad de nadar. Pero hay un problema: tu ballena tiene patas, cuernos y una campana. Después de todo, esta funcionalidad se implementa dentro de la Cow
clase. ¿Qué se puede hacer aquí?

3. Anulación de métodos
La anulación de métodos viene a nuestro rescate. Si heredamos un método que no hace exactamente lo que queremos en nuestra nueva clase, podemos reemplazar ese método con otro.

¿Cómo se hace esto? En nuestra clase descendiente, declaramos el mismo método que el método de la clase principal que queremos anular. Escribimos nuestro nuevo código en él. Y eso es todo, es como si el método anterior en la clase principal simplemente no existiera.
Así es como funciona:
Código | Descripción |
---|---|
|
|
|
Este código muestra el siguiente texto en la pantalla:
|
|
Este código muestra lo siguiente en la pantalla:
|
Después de heredar la Cow
clase y anular el printName
método, la Whale
clase en realidad contiene los siguientes datos y métodos:
|
No conocemos ningún método antiguo. |
GO TO FULL VERSION