En Programación Orientada a Objetos (POO), la herencia simple es un mecanismo mediante el cual una clase hija hereda los atributos y métodos de una única clase padre. Esto permite reutilizar código y crear una relación de tipo "es un" entre las clases. Ejemplo Supongamos que tienes una clase Animal: class Animal: def comer(self): print("El animal está comiendo") Ahora creas una clase Perro que hereda de Animal: class Perro(Animal): def ladrar(self): print("Guau!") Uso: mi_perro = Perro() mi_perro.comer() # Método heredado de Animal mi_perro.ladrar() # Método propio de Perro Salida: El animal está comiendo Guau! Características de la herencia simple Una clase hija hereda de una sola clase padre. La clase hija puede usar los métodos y atributos heredados. También puede agregar nuevos métodos y atributos. Incluso puede sobrescribir (redefinir) métodos de la clase padre para modificar su comportamiento. Diagrama sencillo Animal | | Perro Ventajas Reutilización de código. Facilita el mantenimiento del programa. Permite organizar mejor las clases mediante jerarquías. Diferencia con la herencia múltiple Herencia simple: una clase hereda de un solo padre. Herencia múltiple: una clase puede heredar de dos o más clases padre (permitido en lenguajes como Python, pero no en Java con clases). En resumen, la herencia simple consiste en que una clase deriva de una única clase base, heredando sus atributos y métodos para reutilizar y extender su funcionalidad. La herencia múltiple en Programación Orientada a Objetos (POO) es un mecanismo mediante el cual una clase puede heredar atributos y métodos de dos o más clases padre al mismo tiempo. Esto permite combinar funcionalidades de varias clases en una sola. Ejemplo en Python class Volador: def volar(self): print("Estoy volando") class Nadador: def nadar(self): print("Estoy nadando") class Pato(Volador, Nadador): pass p = Pato() p.volar() # Heredado de Volador p.nadar() # Heredado de Nadador Salida: Estoy volando Estoy nadando Diagrama sencillo Volador Nadador \ / \ / Pato Ventajas Reutiliza código de varias clases. Permite combinar diferentes comportamientos en una sola clase. Reduce la duplicación de código. Desventajas Puede generar conflictos si dos clases padre tienen un método con el mismo nombre. Hace que el diseño sea más complejo y difícil de mantener. ¿Todos los lenguajes la permiten? No. Python: ? Sí permite herencia múltiple. C++: ? Sí permite herencia múltiple. Java: ? No permite herencia múltiple de clases, pero sí permite implementar múltiples interfaces. C#: ? Tampoco permite herencia múltiple de clases; usa interfaces para lograr un efecto similar. En resumen, la herencia múltiple es cuando una clase hereda de dos o más clases padre, obteniendo los atributos y métodos de todas ellas.