Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Meervoudige Overerving | Overzicht van Overerving
C++ OOP

Meervoudige Overerving

Veeg om het menu te tonen

Meervoudige overerving maakt het mogelijk voor een afgeleide klasse om te erven van meerdere basisklassen. Dit betekent dat één enkele afgeleide klasse toegang kan hebben tot de leden (gegevens en functies) van meerdere basisklassen, waardoor hun attributen en gedrag worden gecombineerd.

Horizontale meervoudige overerving

Bij dit type meervoudige overerving erft een klasse eigenschappen en methoden van meerdere superklassen op hetzelfde niveau in de overervingshiërarchie. Beschouw classes: Shape en Color, elk met verschillende eigenschappen en methoden. De Shape definieert de vorm van een object en de Color definieert de kleur ervan.

Shape.h

Shape.h

Color.h

Color.h

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

Laten we nu een subklasse maken genaamd ColoredShape die eigenschappen en methoden erft van zowel de klassen Shape als Color.

ColoredShape.h

ColoredShape.h

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'; } };

Verticale overerving

Bij diepte-overerving erft een class eigenschappen en methoden van zijn directe ouder en diens voorouders, waardoor een overervingsketen ontstaat. Bijvoorbeeld, beschouw de class Vehicle, die als basis kan dienen voor overerving door Car, Truck en anderen. In ons voorbeeld gebruiken we de Car om het concept te illustreren.

Vehicle.h

Vehicle.h

Car.h

Car.h

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

Om verticale overerving te bereiken, moet je een hiërarchie opzetten waarbij de ene class erft van een andere, en vervolgens een volgende klasse weer erft van de eerste, enzovoort. We kunnen een ElectricCar maken die alle eigenschappen en functionaliteiten erft van de Car, die op zijn beurt weer erft van de Vehicle, waarmee een complexe meervoudige overervingsstructuur wordt opgezet.

ElectricCar.h

ElectricCar.h

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

Waarom Meervoudige Overerving Nodig Is

Meervoudige overerving biedt flexibiliteit en hergebruik van code in situaties waarin een class gedrag of kenmerken van meer dan één ouder-class moet vertonen. Hier zijn enkele scenario's waarin meervoudige overerving voordelig is:

  • Reële rollen: een vliegende vogel kan eigenschappen combineren van zowel de Flying als de Bird class, waarmee beide vaardigheden worden weergegeven. De Flying class kan ook van toepassing zijn op vliegtuigen of andere vliegende objecten.

  • Code hergebruik: meervoudige overerving maakt het mogelijk om eigenschappen van verschillende basisklassen te hergebruiken zonder duplicatie.

  • Gerichte interfaces: stimuleert het combineren van kleine, specifieke interfaces in plaats van één grote, algemene interface te gebruiken.

Note
Opmerking

Splits een complex object op in eenvoudigere objecten en gebruik meervoudige overerving om flexibele en onderhoudbare software te creëren.

question mark

Welke van de volgende uitspraken over horizontale overerving is correct?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 3

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 4. Hoofdstuk 3
some-alt