Herencia en POO: Entender su esencia antes de implementarla

Tiempo de lectura: 3 minutos

En la programación orientada a objetos, la herencia puede verse como una técnica valiosa que contribuye a ciertos objetivos fundamentales, siendo la reutilización y extensibilidad.

Estos principios toman forma a través de una jerarquía de clases, donde las superiores serán nombradas por nombres generales sentando las bases para las entidades de abajo que son más específicas.

Pensemos en el concepto de Colores como una entidad que abarca una diversidad de matices. De esta clase madre emergen subclases como Azul, Verde, Amarillo y Rojo, cada una representando una especialización dentro de la idea general de color. Representación gráfica en la figura 1.

La clase de la que se hereda es Colores. Este tipo de clase encapsula la esencia de una idea general, conocida en POO como Clase Base, Clase Padre, Superclase o Clase Ancestro.

Las clases que descienden de ella, especializándola, se conocen como subclases, clases hijas o clases derivadas. Estas son manifestaciones más concretas que partieron de Colores como punto de abstracción.

Gracias a la herencia, permite evitar la repetición innecesaria, considerando la lógica común en estructuras compartidas. Permitiendo ahorrar tiempo e ir formando una estructura de jerarquía en nuestro sistemas.

Este beneficio de jerarquía ocasiona que las clases que se encuentren en un orden mayor opten por compartir (o heredar ) sus comportamiento y atributos a las clases que deriven de esta misma.

A partir de la clase Vehículo, podemos observar en la figura 2 que existen dos clases que la extienden: Auto y Motocicleta. Esto significa que ambas heredan los atributos marca, modelo y año, así como los comportamientos arrancar() y detener().

Figura 2 – Diagrama de herencia entre “Vehiculo” y sus subclases

Anteriormente, vimos cómo la reutilización es un principio clave en la herencia. Este enfoque no solo optimiza el desarrollo, sino que también evita el esfuerzo innecesario de reconstruir algo que ya existe y funciona. Como suele decirse, “no es necesario reinventar la rueda”.

Esto nos lleva al concepto de extensibilidad, donde es posible expandir el sistema sin comprometer lo que ya ha sido construido. La clave está en diseñar con visión, permitiendo que nuevas entidades se integren dentro de la misma estructura hereditaria.

Tomando nuevamente como referencia la clase Colores, como se aprecia en la figura 3, podemos aplicar el principio de extensibilidad al agregar una nueva subclase: Rosa. Esta expansión permite ampliar la jerarquía sin comprometer la estructura establecida por la Clase Ancestro, ni afectar el comportamiento de las demás Clases Derivadas.

Figura 3 – Diagrama de herencia entre “Colores” y sus subclases + Clase “Rosa”

En lugar de forzar cambios sobre lo existente, la herencia nos ofrece un camino natural para el crecimiento. Donde una nueva entidad no rompe el equilibrio, sino que lo enriquece, manteniendo la coherencia del sistema y su evolución.

Finalmente, este principio nos enseña que no siempre es necesario construir desde cero, sino reconocer que contamos con una herramienta que nos permite organizar y jerarquizar nuestro sistema de manera inteligente.

La herencia no solo facilita la reutilización y extensibilidad, sino que también nos brinda la flexibilidad para adaptar y evolucionar nuestras subclases, sin que pierdan la esencia transmitida por su Clase Ancestro.