Herencia
El mecanismo por el que una clase reutiliza los datos y métodos de otra y puede ampliarlos o cambiarlos.
Con la herencia, una clase hija toma todo lo de una clase padre y añade o redefine lo que necesite. Por ejemplo, Coche y Moto pueden heredar de Vehiculo.
Abusar de ella crea jerarquías difíciles de cambiar, así que muchas guías recomiendan heredar poco y combinar objetos (composición) o usar interfaces.
Un ejemplo
class CuentaAhorro extends Cuenta reutiliza ingresar y retirar de Cuenta y añade el cálculo de intereses.
Por qué importa
La herencia permite que una clase aproveche todo lo definido en otra y añada o modifique solo lo que la diferencia. Es útil cuando existe una relación natural de tipo «es un»: un Perro es un Animal, así que comparte con él propiedades y métodos generales sin duplicarlos.
La encontrarás en bibliotecas y frameworks, donde se espera que heredes de una clase base para personalizarla. Es importante entender qué se hereda y cómo sobrescribir un método, porque un cambio en la clase padre se propaga a todas las hijas, para bien o para mal.
Confusiones frecuentes
No toda relación entre clases debe resolverse con herencia. Un Coche tiene un motor pero no es un motor: aquí se usa composición, es decir, un atributo que contiene otro objeto. Existe una regla de diseño muy conocida que recomienda preferir la composición a la herencia cuando haya dudas, porque las jerarquías profundas se vuelven rígidas y difíciles de seguir. Además, no todos los lenguajes permiten heredar de varias clases a la vez: Java no, Python sí.
Preguntas frecuentes
¿Cómo llamo al método de la clase padre?
Con super() en Python, Java y JavaScript. Se usa mucho dentro del constructor de la clase hija para inicializar la parte heredada.
¿Qué significa sobrescribir un método?
Definir en la clase hija un método con el mismo nombre que el del padre para que, al llamarlo sobre la hija, se ejecute la versión nueva.
Fuentes consultadas
- extends (MDN Web Docs)