Cursusinhoud
C++ OOP
C++ OOP
Toegangsmodificatoren bij Overerving
Toegangsmodificatoren spelen een cruciale rol in objectgeoriënteerd programmeren, vooral bij overerving. Zij bepalen hoe de leden (attributen en methoden) van een basisklasse toegankelijk zijn voor afgeleide klassen. Inzicht in deze modificatoren is essentieel voor het ontwerpen van effectieve klassen en het behouden van gegevensinkapseling en integriteit.
Toegangstypen van Overerving
Een klasse kan worden afgeleid van een andere klasse. De afgeleide klasse erft leden van de basisklasse, maar de toegankelijkheid van deze geërfde leden hangt af van zowel de toegangsmodificator die in de basisklasse wordt gebruikt als het type overerving.
Base Class public | Base Class protected | Base Class private | |
---|---|---|---|
public | Public in Derived Class | Protected in Derived Class | Not Accessible |
protected | Protected in Derived Class | Protected in Derived Class | Not Accessible |
private | Private in Derived Class | Private in Derived Class | Not Accessible |
public.cpp
protected.cpp
private.cpp
class Derived : public Base { // publicMember is public // protectedMember is protected // privateMember is not accessible };
Toegangscontrole en Overerving Conclusie
Bij objectgeoriënteerde overerving zijn private
leden van een basisklasse niet toegankelijk voor afgeleide klassen, waardoor ze beschermd zijn tegen wijziging of opvraging. Protected
leden zijn alleen toegankelijk binnen de subklasse, terwijl public
leden extern toegankelijk zijn. U kunt hiermee experimenteren met behulp van de onderstaande codevoorbeeld.
main.cpp
class Base { public: int publicAttribute; protected: int protectedAttribute; private: int privateAttribute; }; class PublicDerived : public Base {}; class ProtectedDerived : protected Base {}; class PrivateDerived : private Base {}; int main() { PublicDerived obj1; ProtectedDerived obj2; PrivateDerived obj3; }
Protected
leden, toegankelijk binnen afgeleide en verder afgeleide klassen, fungeren als een brug tussen private
en public
elementen.
Constructors en destructors worden automatisch aangeroepen voor objecten van afgeleide klassen, wat zorgt voor correcte initialisatie en opruiming van resources. Om deze elementen van de basisklasse direct te benaderen, moeten constructors en destructors als public
worden gedeclareerd.
Bedankt voor je feedback!