Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Zugriffsmodifikatoren in der Vererbung | Überblick Über Vererbung
C++ OOP
course content

Kursinhalt

C++ OOP

C++ OOP

1. Grundlagen der OOP in C++
2. Konstruktoren und Destruktoren
3. Überblick Über Die Kapselung
4. Überblick Über Vererbung
5. Überblick Über Polymorphismus

book
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 publicBase Class protectedBase 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

public.cpp

protected.cpp

protected.cpp

private.cpp

private.cpp

copy
12345
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

main.cpp

copy
1234567891011121314151617181920
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; }
Note
Hinweis

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.

question mark

Was bestimmt, wie Mitglieder einer Basisklasse von einer abgeleiteten Klasse aus zugänglich sind?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

course content

Kursinhalt

C++ OOP

C++ OOP

1. Grundlagen der OOP in C++
2. Konstruktoren und Destruktoren
3. Überblick Über Die Kapselung
4. Überblick Über Vererbung
5. Überblick Über Polymorphismus

book
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 publicBase Class protectedBase 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

public.cpp

protected.cpp

protected.cpp

private.cpp

private.cpp

copy
12345
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

main.cpp

copy
1234567891011121314151617181920
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; }
Note
Hinweis

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.

question mark

Was bestimmt, wie Mitglieder einer Basisklasse von einer abgeleiteten Klasse aus zugänglich sind?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 2
some-alt