Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Herencia Múltiple | Visión General de la Herencia
Practice
Projects
Quizzes & Challenges
Cuestionarios
Challenges
/
POO en C++

bookHerencia Múltiple

Desliza para mostrar el menú

La herencia múltiple permite que una clase derivada herede de varias clases base. Esto significa que una sola clase derivada puede acceder a los miembros (datos y funciones) de varias clases base, combinando efectivamente sus atributos y comportamientos.

Herencia múltiple horizontal

En este tipo de herencia múltiple, una clase hereda propiedades y métodos de varias superclases al mismo nivel en la jerarquía de herencia. Considere las classes: Shape y Color, cada una con propiedades y métodos distintos. Shape define la forma de un objeto y Color define su color.

Shape.h

Shape.h

Color.h

Color.h

copy
1234567
class Shape { public: void setShape(const std::string& value) { shape = value; } std::string getShape() { return shape; } private: std::string shape; };

Ahora, creemos una subclase llamada ColoredShape que hereda propiedades y métodos de ambas clases Shape y Color.

ColoredShape.h

ColoredShape.h

copy
123456789
#include "Shape.h" #include "Color.h" class ColoredShape : public Shape, public Color { public: void describe() { std::cout << "This object is a " << getShape() << " shape and is " << getColor() << '\n'; } };

Herencia vertical

En la herencia en profundidad, una class hereda propiedades y métodos de su progenitor directo y sus ancestros, formando una cadena de herencia. Por ejemplo, considere la class Vehicle, que puede servir como base para la herencia de Car, Truck y otros. En nuestro ejemplo, utilizaremos Car para ilustrar el concepto.

Vehicle.h

Vehicle.h

Car.h

Car.h

copy
12345
class Vehicle { public: void start() { std::cout << "Vehicle started"; } void stop() { std::cout << "Vehicle stopped"; } };

Ahora, para lograr la herencia vertical, es necesario establecer una jerarquía donde una class herede de otra, y luego una clase subsiguiente herede de la primera, y así sucesivamente. Se puede crear un ElectricCar que herede todas las propiedades y funcionalidades de Car, que a su vez hereda de Vehicle, estableciendo así una estructura de herencia múltiple compleja.

ElectricCar.h

ElectricCar.h

copy
123456
#include "Car.h" class ElectricCar : public Car { public: void charge() { std::cout << "Electric car is charging"; } };

Por qué se necesita la herencia múltiple

La herencia múltiple proporciona flexibilidad y reutilización de código en situaciones donde una class necesita exhibir comportamientos o características de más de una class padre. A continuación se presentan algunos escenarios donde la herencia múltiple es beneficiosa:

  • Roles del mundo real: un pájaro volador puede combinar características tanto de las clases Flying como Bird, representando ambas habilidades. La clase Flying también puede aplicarse a aviones u otros objetos voladores.

  • Reutilización de código: la herencia múltiple permite que una clase reutilice características de diferentes clases base sin duplicación.

  • Interfaces enfocadas: fomenta la combinación de interfaces pequeñas y específicas en lugar de utilizar una sola interfaz grande y general.

Note
Nota

Dividir un objeto complejo en otros más simples y utilizar la herencia múltiple para crear software flexible y mantenible.

question mark

¿Cuál de las siguientes afirmaciones sobre la herencia horizontal es correcta?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 3

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 4. Capítulo 3
some-alt