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

bookZugriffsmodifikatoren 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 aus zugänglich sind. Das Verständnis dieser Modifizierer ist wesentlich für die Gestaltung effektiver Klassen sowie für die Wahrung von Datenkapselung und Integrität.

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

Fazit zur Zugriffskontrolle und Vererbung

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. Protected-Mitglieder sind ausschließlich innerhalb der Unterklasse zugänglich, während auf public-Mitglieder auch von außen zugegriffen werden kann. Mit dem folgenden Codebeispiel kann dieses Verhalten nachvollzogen werden.

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, zugänglich innerhalb abgeleiteter und weiter abgeleiteter Klassen, dienen als Brücke zwischen private und public Elementen.

Konstruktoren und Destruktoren werden für Objekte der abgeleiteten Klasse automatisch aufgerufen, um eine ordnungsgemäße Initialisierung und Freigabe von Ressourcen sicherzustellen. Um direkt auf diese Elemente der Basisklasse zuzugreifen, 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

Suggested prompts:

Can you explain the difference between public, protected, and private access modifiers?

How does the type of inheritance affect member accessibility in derived classes?

Can you provide an example demonstrating these access modifiers in code?

bookZugriffsmodifikatoren in der Vererbung

Swipe um das Menü anzuzeigen

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 aus zugänglich sind. Das Verständnis dieser Modifizierer ist wesentlich für die Gestaltung effektiver Klassen sowie für die Wahrung von Datenkapselung und Integrität.

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

Fazit zur Zugriffskontrolle und Vererbung

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. Protected-Mitglieder sind ausschließlich innerhalb der Unterklasse zugänglich, während auf public-Mitglieder auch von außen zugegriffen werden kann. Mit dem folgenden Codebeispiel kann dieses Verhalten nachvollzogen werden.

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, zugänglich innerhalb abgeleiteter und weiter abgeleiteter Klassen, dienen als Brücke zwischen private und public Elementen.

Konstruktoren und Destruktoren werden für Objekte der abgeleiteten Klasse automatisch aufgerufen, um eine ordnungsgemäße Initialisierung und Freigabe von Ressourcen sicherzustellen. Um direkt auf diese Elemente der Basisklasse zuzugreifen, 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