Kursinhalt
C++ OOP
C++ OOP
Zugriffsmodifikatoren in der Vererbung
Zugriffsmodifizierer spielen eine entscheidende Rolle in der objektorientierten Programmierung, insbesondere bei der Vererbung. Sie bestimmen, wie die Mitglieder (Attribute und Methoden) einer Basisklasse von abgeleiteten Klassen verwendet werden können. Das Verständnis dieser Modifizierer ist wesentlich für die Gestaltung effektiver Klassen sowie für die Wahrung von Datenkapselung und Integrität.
Zugriffstypen bei der Vererbung
Eine Klasse kann von einer anderen Klasse abgeleitet werden. Die abgeleitete Klasse erbt Mitglieder von der Basisklasse, aber die Zugänglichkeit dieser geerbten Mitglieder hängt sowohl vom in der Basisklasse verwendeten Zugriffsmodifizierer als auch vom Typ der Vererbung ab.
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 };
Zugriffskontrolle und Vererbung – Fazit
Bei der objektorientierten Vererbung sind private
-Mitglieder einer Basisklasse für abgeleitete Klassen nicht zugänglich, wodurch sie vor Änderungen oder dem Auslesen geschützt werden. Auf Protected
-Mitglieder kann ausschließlich innerhalb der Unterklasse zugegriffen werden, während public
-Mitglieder auch von außen erreichbar sind. Mit dem folgenden Codebeispiel lässt sich dies nachvollziehen.
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
-Mitglieder, die innerhalb abgeleiteter und weiter abgeleiteter Klassen zugänglich sind, bilden eine Brücke zwischen private
- und public
-Elementen.
Konstruktoren und Destruktoren werden für Objekte abgeleiteter Klassen automatisch aufgerufen, um eine ordnungsgemäße Initialisierung und Freigabe von Ressourcen sicherzustellen. Um diese Elemente der Basisklasse direkt zugänglich zu machen, müssen Konstruktoren und Destruktoren als public
deklariert werden.
Danke für Ihr Feedback!