Kursinhalt
C++ OOP
C++ OOP
Mehrfachvererbung
Mehrfachvererbung ermöglicht es einer abgeleiteten Klasse, von mehreren Basisklassen zu erben. Das bedeutet, dass eine einzelne abgeleitete Klasse Zugriff auf die Mitglieder (Daten und Funktionen) mehrerer Basisklassen hat und somit deren Attribute und Verhaltensweisen kombiniert.
Horizontale Mehrfachvererbung
Bei dieser Art der Mehrfachvererbung erbt eine Klasse Eigenschaften und Methoden von mehreren Superklassen auf derselben Ebene der Vererbungshierarchie. Betrachten Sie die classes
: Shape
und Color
, die jeweils unterschiedliche Eigenschaften und Methoden besitzen. Die Shape
definiert die Form eines Objekts, und die Color
definiert dessen Farbe.
Shape.h
Color.h
class Shape { public: void setShape(const std::string& value) { shape = value; } std::string getShape() { return shape; } private: std::string shape; };
Erstellen wir nun eine Unterklasse namens ColoredShape
, die Eigenschaften und Methoden sowohl von den Klassen Shape
als auch Color
erbt.
ColoredShape.h
#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'; } };
Vertikale Vererbung
Bei der tiefen Vererbung erbt eine class
Eigenschaften und Methoden von ihrem direkten Elternteil und dessen Vorfahren, wodurch eine Vererbungskette entsteht. Betrachten Sie beispielsweise die class
Vehicle
, die als Grundlage für die Vererbung von Car
, Truck
und anderen dienen kann. In unserem Beispiel verwenden wir das Car
, um das Konzept zu veranschaulichen.
Vehicle.h
Car.h
class Vehicle { public: void start() { std::cout << "Vehicle started"; } void stop() { std::cout << "Vehicle stopped"; } };
Um vertikale Vererbung zu erreichen, muss eine Hierarchie erstellt werden, in der eine class
von einer anderen erbt und eine weitere Klasse wiederum von der ersten erbt, und so weiter. Wir können ein ElectricCar
erstellen, das alle Eigenschaften und Funktionalitäten von Car
erbt, wobei Car selbst von Vehicle
erbt. Dadurch entsteht eine komplexe Mehrfachvererbung.
ElectricCar.h
#include "Car.h" class ElectricCar : public Car { public: void charge() { std::cout << "Electric car is charging"; } };
Warum Mehrfachvererbung benötigt wird
Mehrfachvererbung bietet Flexibilität und Wiederverwendbarkeit von Code in Situationen, in denen eine class
Verhaltensweisen oder Eigenschaften von mehr als einer Eltern-class
aufweisen muss. Hier sind einige Szenarien, in denen Mehrfachvererbung vorteilhaft ist:
Rollen aus der realen Welt: Ein fliegender Vogel kann Merkmale sowohl von den Klassen
Flying
als auchBird
kombinieren und so beide Fähigkeiten repräsentieren. Die KlasseFlying
kann auch auf Flugzeuge oder andere Flugobjekte angewendet werden.Code-Wiederverwendung: Mehrfachvererbung ermöglicht es einer Klasse, Funktionen verschiedener Basisklassen ohne Duplizierung wiederzuverwenden.
Fokussierte Schnittstellen: Fördert die Kombination kleiner, spezifischer Schnittstellen anstelle einer großen, allgemeinen.
Ein komplexes Objekt in einfachere aufteilen und Mehrfachvererbung nutzen, um flexible und wartbare Software zu erstellen.
Danke für Ihr Feedback!