Kursinhalt
C++ OOP
C++ OOP
Mehrfache Vererbung
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 haben kann, wodurch ihre Attribute und Verhaltensweisen effektiv kombiniert werden. Um dieses Konzept besser zu verstehen, beginnen wir mit einem einfachen Beispiel.
Horizontale Mehrfachvererbung
Bei dieser Art der Mehrfachvererbung erbt eine Klasse Eigenschaften und Methoden von mehreren Superklassen auf derselben Ebene in der Vererbungshierarchie. Betrachten Sie Klassen: Shape und Color, jede mit unterschiedlichen Eigenschaften und Methoden. Die Shape definiert die Form eines Objekts, und die Color definiert dessen Farbe.
Shape
Color
class Shape { public: void setShape(const std::string& value) { shape = value; } std::string getShape() { return shape; } private: std::string shape; };
Nun erstellen wir eine Unterklasse namens ColoredShape, die Eigenschaften und Methoden von beiden Klassen Shape und Color erbt.
ColoredShape
#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 " << setColor() << '\n'; } };
Vertikale Vererbung
Bei der tiefen Vererbung erbt eine Klasse Eigenschaften und Methoden von ihrem direkten Elternteil und ihren Vorfahren, wodurch eine Vererbungskette entsteht. Betrachten Sie zum Beispiel die Klasse Fahrzeug, die als Grundlage für die Vererbung für Auto, Lkw und andere dienen kann. In unserem Beispiel werden wir das Auto verwenden, um das Konzept zu veranschaulichen.
Vehicle
Car
class Vehicle { public: void start() { std::cout << "Vehicle started"; } void stop() { std::cout << "Vehicle stopped"; } };
Um vertikale Vererbung zu erreichen, müssen Sie eine Hierarchie einrichten, bei der eine Klasse von einer anderen erbt und dann eine nachfolgende Klasse von der ersten erbt, und so weiter. Wir können ein ElectricCar erstellen, das alle Eigenschaften und Funktionen vom Car erbt, welches selbst vom Vehicle erbt und so eine komplexe Mehrfachvererbungsstruktur etabliert.
ElectricCar
#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 Code-Wiederverwendung in Situationen, in denen eine Klasse Verhaltensweisen oder Eigenschaften von mehr als einer Eltern-Klasse aufweisen muss. Hier sind einige Szenarien, in denen Mehrfachvererbung von Vorteil ist:
-
Modellierung von realen Beziehungen: Objekte haben oft mehrere Aspekte oder Rollen. Zum Beispiel könnte eine FlyingBird-Klasse sowohl von Flying als auch von Bird erben, um sowohl die Eigenschaften eines Vogels als auch die Fähigkeit zu fliegen zu erfassen. Und Sie können die Klasse Flying weiterhin für andere Objekte verwenden, die fliegen könnten, wie ein Flugzeug.
-
Code-Wiederverwendbarkeit: Mehrfachvererbung ermöglicht die Wiederverwendung bestehender Klassen ohne Code-Duplikation. Durch das Erben von mehreren Basisklassen kann eine abgeleitete Klasse Funktionen von jeder Basisklasse unabhängig erben.
-
Interface-Segregation: Es ermöglicht die Erstellung von Schnittstellen, die auf spezifische Bedürfnisse zugeschnitten sind. Anstatt eine monolithische Schnittstelle zu erstellen, ermöglicht die Mehrfachvererbung die Erstellung kleinerer, fokussierterer Schnittstellen, die nach Bedarf kombiniert werden können.
Hinweis
Zerlegen Sie ein komplexes Objekt in einfachere und nutzen Sie Mehrfachvererbung, um flexible und wartbare Software zu erstellen.
Danke für Ihr Feedback!