Logo Studenta

Herencia múltiple y polimorfismo

¡Estudia con miles de materiales!

Vista previa del material en texto

Dentro del contexto de la Programación Orientada a Objetos Avanzada, la herencia múltiple y el polimorfismo son conceptos clave que permiten la creación de software más flexible y extensible.
Herencia Múltiple:
1. Definición:
 La herencia múltiple permite que una clase herede atributos y comportamientos de más de una clase base.
 En lenguajes que admiten herencia múltiple, una clase puede heredar de varias clases, combinando así características de múltiples fuentes.
2. Ejemplo:
 ```python
 class ClaseA:
 def metodo_a(self):
 print("Método de ClaseA")
 class ClaseB:
 def metodo_b(self):
 print("Método de ClaseB")
 class ClaseC(ClaseA, ClaseB):
 pass
 objeto_c = ClaseC()
 objeto_c.metodo_a() # Imprime "Método de ClaseA"
 objeto_c.metodo_b() # Imprime "Método de ClaseB"
3. Ventajas y Desventajas:
 -Ventajas:
 Permite la reutilización de código de múltiples fuentes.
 Facilita la creación de jerarquías de clases complejas.
Desventajas:
 Puede llevar a la llamada "Diamante de la Muerte" o problemas de ambigüedad si no se gestiona adecuadamente.
Polimorfismo:
1. Definición:
 El polimorfismo permite que objetos de diferentes tipos sean tratados de manera uniforme.
 Existen dos tipos de polimorfismo: polimorfismo de compilación (también conocido como estático) y polimorfismo de ejecución (también conocido como dinámico).
2. Ejemplo (Polimorfismo de Ejecución):
 ```python
 class Animal:
 def hacer_sonido(self):
 pass
 class Perro(Animal):
 def hacer_sonido(self):
 print("Guau")
 class Gato(Animal):
 def hacer_sonido(self):
 print("Miau")
 def hacer_sonido_animal(animal):
 animal.hacer_sonido()
 perro = Perro()
 gato = Gato()
 hacer_sonido_animal(perro) # Imprime "Guau"
 hacer_sonido_animal(gato) # Imprime "Miau"
3. Ventajas:
 Permite la creación de código más genérico y reusable.
 Facilita la implementación de interfaces y abstracciones.
4. Polimorfismo de Compilación (Estático):
 Se refiere al polimorfismo que se resuelve en tiempo de compilación. Esto puede ser a través de sobrecarga de métodos o tipos genéricos.
 ```java
 // Ejemplo en Java con sobrecarga de métodos
 class Operaciones {
 int sumar(int a, int b) {
 return a + b;
 }
 double sumar(double a, double b) {
 return a + b;
 }
 }
 ```
En resumen, la herencia múltiple y el polimorfismo son conceptos importantes en la Programación Orientada a Objetos Avanzada. La herencia múltiple permite la combinación de características de múltiples clases, mientras que el polimorfismo facilita el tratamiento uniforme de objetos de diferentes tipos. Ambos conceptos son esenciales para crear sistemas de software flexible y extensible.

Otros materiales