← Lumbre

Programación Orientada a Objetos · 2.º Herencia y polimorfismo

Portada de Herencia y polimorfismo

Herencia y polimorfismo

✦ La herencia evita repetir: una clase hija hereda de una clase padre · Programación Orientada a Objetos · Programación · en menos de 8 minutos

Roadwise Consulting

Firmado y verificado · Biblioteca UNIV

Objetivo: Modelar jerarquías con herencia, redefinir comportamiento y aprovechar el polimorfismo para escribir código que trate objetos distintos de forma uniforme.

8 min Programación Orientada a Objetos · Programación 18–30 años
Más
Herencia y polimorfismo

Herramientas de la lección

◉ Entrar a La Matrix Sorpréndeme

Sobre este contenido

Ir a

Volver a Programación Orientada a Objetos · 2.º semestre Cursos Explorar Mi cuenta Salir del modo estudio

Herencia y polimorfismo

Ilustracion de programacion orientada a objetos: jerarquia de clases con herencia y encapsulamiento.
Principios de la programacion orientada a objetos: clases, herencia y polimorfismo.

Mapa conceptual

  • Programacion OO
    • Clases
      • Objetos
      • Atributos
      • Metodos self
    • Encapsulamiento
      • Public
      • Private
      • Properties
    • Herencia
      • Polimorfismo
      • Abstractas
      • Interfaces
    • Composicion
      • Sobre herencia
      • Delegacion
      • Acoplamiento
    • Proyecto
      • Paquetes
      • Modulos
      • Convenciones

Herencia

Una clase puede heredar de otra: la subclase (hijo) recibe los atributos y métodos de la superclase (padre) y puede añadir los propios o reescribir los heredados. Se expresa indicando el padre entre paréntesis al definir la clase.

Override y super

  • Override (redefinir): la subclase ofrece su versión de un método del padre, que gana al invocarse.
  • super(): permite llamar a la versión del padre desde el override, reutilizando en vez de duplicar.

Polimorfismo

Polimorfismo es que distintos objetos respondan al MISMO mensaje con comportamiento propio. Una lista [perro, gato, pajaro] puede recibir un bucle que llame a hablar() en cada elemento sin preguntar de qué tipo es. El código depende de la interfaz, no del tipo concreto.

Sustituibilidad

El principio de sustitución de Liskov: donde se espera un Animal, debería poder colocarse cualquier subtipo sin romper el programa. Si un «Pinguino» no puede volar aunque vuele() esté en el padre, la jerarquía está mal diseñada.

Herencia organiza; polimorfismo desacopla.
ConceptoQué esPara qué sirve
Herenciasubclase recibe lo de la superclaseno repetir
Overrideredefinir un método heredadoespecializar
super()llamar al método del padrereutilizar y extender
Polimorfismomismo mensaje, respuesta según tipocódigo genérico y extensible

¿Qué permite el polimorfismo en un bucle que llama a dibujar() sobre formas distintas?

Herencia múltiple

Una clase puede heredar de varias. Da flexibilidad pero introduce el problema del diamante: ¿qué versión de un método se usa? Python lo resuelve con un orden lineal (MRO). Como regla, evita herencia múltiple profunda y prefiere composición.

Cuándo NO heredar

Solo tiene sentido heredar cuando hay una relación es-un real y compartida: un Coche ES-un Vehículo. Heredar solo para reutilizar código, cuando no hay esa relación, produce jerarquías frágiles; mejor composición (tema de la siguiente lección).

Gracias al polimorfismo, una función que recibe un Animal puede funcionar con subtipos que se creen en el futuro sin modificarse.

Duck typing sin herencia

En Python a menudo no hace falta heredar una base común: basta con que el objeto implemente el método esperado (duck typing, «si camina como pato...»). El polimorfismo no exige una jerarquía formal, solo una interfaz compartida.

Errores frecuentes

  • Crear jerarquías enormes heredando solo para no copiar código.
  • Violar Liskov: una subclase que rompe lo que el padre promete.
  • Abusar de isinstance en vez de delegar el comportamiento en cada tipo.

Clasifica cada situación:

Arrastra cada ficha a su categoría (o tócala y luego toca la categoría). También puedes usar el teclado.

Video complementario
Recurso audiovisual para reforzar los conceptos.

Modela una jerarquía de medios de pago (tarjeta, transferencia, efectivo) con un método procesar(). Explica dónde aplica polimorfismo y por qué NO heredarías efectivo de tarjeta.

Tu texto se guarda sólo en este dispositivo.

Las respuestas y tu progreso se guardan sólo en este dispositivo. Contenido firmado por su autoría mediante Lumbre.
Más sobre esta lección
Explora temas relacionados

Conceptos

Comentarios

Inicia sesión para comentar.

Todavía no hay comentarios. Sé la primera persona en opinar.