Saltar a contenido

Herencia: El Poder de la Reutilización

La Herencia es un mecanismo que permite que una clase "herede" las características de otra. Es fundamental para evitar la duplicación de código; en lugar de escribir la misma lógica en diez clases diferentes, la escribimos una vez en una Clase Padre y dejamos que las Clases Hijas la utilicen.


1. Jerarquía: Padre e Hijo

  • Clase Padre (Superclase): Es la clase general que contiene los atributos y métodos comunes.
  • Clase Hija (Subclase): Es la clase especializada que hereda del padre. Puede tener sus propios métodos adicionales o incluso modificar los que heredó.

2. La función super()

Cuando una clase hija tiene su propio método __init__, este sobrescribe al del padre. Para evitar perder la configuración del padre, usamos la función super().

super() le dice a Python: "Ve a la clase padre y ejecuta su constructor primero, luego regresa aquí para terminar con mis propios datos".


3. Sobrescritura de Métodos (Overriding)

Una clase hija puede redefinir un método que heredó del padre si necesita que se comporte de forma distinta. Por ejemplo, la clase Animal puede tener un método hablar(), pero la clase Perro lo sobrescribirá para que diga "Guau" y la clase Gato para que diga "Miau".


4. Tipos de Herencia

Python es muy flexible y permite varios tipos: 1. Herencia Simple: Una hija hereda de un solo padre. 2. Herencia Múltiple: Una hija puede heredar de dos o más padres a la vez (algo que no todos los lenguajes permiten). 3. Herencia Multinivel: Una clase es hija de otra que, a su vez, es hija de una tercera (como abuelo, padre e hijo).


Reto: El Sistema de Empleados

Vamos a modelar una empresa. Todos los empleados tienen un nombre y un sueldo, pero los Desarrolladores tienen además un lenguaje de programación favorito.

Instrucciones: 1. Crea la clase padre Empleado con un __init__ que reciba nombre y sueldo. 2. Crea la clase hija Desarrollador que herede de Empleado. 3. En el __init__ de Desarrollador, usa super() para enviar el nombre y sueldo al padre, y añade un atributo nuevo llamado lenguaje. 4. Crea un objeto llamado dev que sea un Desarrollador, de nombre 'Luis', sueldo 3000 y lenguaje 'Python'.

# Aplica la herencia y super():