Significado de Herencia en programación
Sustantivo femenino. Del latín hereditia, derivado de heres, -edis, «heredero». En informática calca el sentido del inglés inheritance.
La herencia es el mecanismo por el que una clase adquiere los atributos y los métodos de otra clase ya existente, y puede añadir características propias o modificar las heredadas.
Es uno de los cuatro pilares habituales de la programación orientada a objetos, junto con la abstracción, el encapsulamiento y el polimorfismo, y sirve sobre todo para reutilizar código común entre clases relacionadas.
Qué es la herencia en programación
Imaginemos una clase Animal con atributos como nombre y edad, y un método hacerSonido(). Las clases Perro y Gato pueden heredar de Animal: obtienen automáticamente nombre, edad y hacerSonido() sin tener que volver a escribirlos, y cada una puede definir su propia versión de hacerSonido() o añadir atributos propios, como raza en el caso de Perro.
A la clase de la que se hereda se la llama clase base, padre o superclase; a la que hereda, clase derivada, hija o subclase. La relación que describe la herencia suele expresarse como «es un»: un Perro es un Animal, así que tiene sentido que herede de esa clase más general.
La estudia la programación orientada a objetos, dentro del diseño de jerarquías de clases, con el objetivo de evitar repetir código común y de organizar los conceptos de un programa de lo más general a lo más específico.
Origen de la palabra herencia
Del latín hereditia, derivado de heres, -edis, «heredero, quien recibe los bienes de otro». El sentido jurídico y familiar de recibir algo de un antecesor se trasladó, en programación, a la idea de que una clase reciba las características ya definidas en otra. En inglés, la voz equivalente es inheritance.
El mecanismo se popularizó junto con los primeros lenguajes de programación orientados a objetos, a partir de los años setenta y ochenta, como forma de organizar programas grandes evitando que el mismo código se repitiera en clases parecidas. Con el tiempo se convirtió en uno de los conceptos que se enseñan de forma sistemática en cualquier introducción a este paradigma.
Tipos de herencia
| Tipo | En qué consiste | Ejemplo |
|---|---|---|
| Simple | Una clase hereda de una única clase base. | Perro hereda solo de Animal. |
| Múltiple | Una clase hereda de varias clases base a la vez. | Una clase VehiculoAnfibio que hereda de Vehiculo y de Embarcacion. |
| Multinivel | Una clase hereda de otra que, a su vez, hereda de una tercera. | Cachorro hereda de Perro, y Perro hereda de Animal. |
No todos los lenguajes de programación permiten la herencia múltiple; muchos la evitan porque puede generar ambigüedades cuando dos clases base ofrecen un método con el mismo nombre, y ofrecen mecanismos alternativos para lograr un efecto similar.
Ejemplos de uso de herencia en programación
La clase Rectangulo hereda de Figura y reutiliza el método calcularPerimetro() sin necesidad de volver a programarlo.
En la revisión de código, sugirieron usar herencia para evitar que tres clases repitieran el mismo bloque de atributos comunes.
La clase Gerente hereda de Empleado y añade un atributo propio, presupuestoAsignado, que un Empleado normal no tiene.
El manual de programación orientada a objetos dedica un capítulo entero a explicar cuándo conviene usar herencia y cuándo no.
Sinónimos y palabras relacionadas
Sinónimos: no tiene sinónimos exactos en este sentido técnico.
Antónimos: composición (como alternativa de diseño, no como opuesto estricto).
No es lo mismo que:
- Polimorfismo: permite que un mismo método se comporte de forma distinta según la clase del objeto; suele apoyarse en la herencia, pero es un concepto diferente.
- Composición: construye un objeto incluyendo otros objetos como partes suyas, en lugar de heredar de una clase; se usa como alternativa cuando la relación no es realmente «es un», sino «tiene un».
- Interfaz: declara qué métodos debe tener una clase sin proporcionar su implementación; la herencia, en cambio, sí transmite el comportamiento ya implementado de la clase base.
Preguntas frecuentes sobre herencia en programación
¿Para qué sirve la herencia en programación?
Sirve para reutilizar atributos y métodos ya definidos en una clase, evitando repetir el mismo código en varias clases relacionadas, y para organizar los conceptos de un programa de lo más general a lo más específico.
¿Cuándo conviene usar herencia y cuándo composición?
La herencia conviene cuando la relación entre las clases es realmente «es un tipo de», como Perro y Animal; la composición conviene cuando la relación es «tiene un», como un Coche que tiene un Motor, sin que un motor sea un tipo de coche.
¿Todos los lenguajes de programación permiten herencia múltiple?
No. Algunos lenguajes la permiten sin restricciones, otros la prohíben para evitar ambigüedades cuando dos clases base comparten un método con el mismo nombre, y ofrecen mecanismos alternativos para combinar comportamientos.