Heim >Backend-Entwicklung >C++ >Wie wirken sich Zugriffsspezifizierer (privat, geschützt, öffentlich) auf die Zugänglichkeit von Mitgliedern bei der Vererbung aus?

Wie wirken sich Zugriffsspezifizierer (privat, geschützt, öffentlich) auf die Zugänglichkeit von Mitgliedern bei der Vererbung aus?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-16 18:11:11121Durchsuche

How Do Access Specifiers (private, protected, public) Affect Member Accessibility in Inheritance?

Zugriffsspezifizierer bei der Vererbung verstehen

Vererbung ermöglicht es Klassen, Mitglieder und Funktionen von übergeordneten Klassen zu erben, aber die Zugänglichkeit dieser geerbten Mitglieder hängt davon ab die verwendeten Zugriffsspezifizierer. Die Zugriffsspezifizierer private, protected und public steuern, wie auf Mitglieder in geerbten Klassen zugegriffen wird.

Private Vererbung

  • Private Mitglieder einer Basisklasse bleiben in privat die abgeleitete Klasse.
  • Geschützte und öffentliche Mitglieder der Basisklasse werden in der abgeleiteten Klasse privat Klasse.
  • Abgeleitete Klassen verlieren die Möglichkeit, auf die privaten Mitglieder der Basisklasse zuzugreifen.

Beispiel:

class Base {
private:
    int private_member;
};

class Derived : private Base {
public:
    void accessPrivate() {
        // Error: Cannot access 'private_member' because it's private in 'Base'
    }
};

Geschützte Vererbung

  • Öffentliche Mitglieder einer Basisklasse werden geschützt in der abgeleiteten Klasse.
  • Geschützte Mitglieder der Basisklasse bleiben in der abgeleiteten Klasse geschützt.
  • Abgeleitete Klassen können sowohl direkt als auch über Zeiger auf die Basisklasse auf die geschützten Mitglieder der Basisklasse zugreifen Objekte.

Beispiel:

class Base {
protected:
    int protected_member;
};

class Derived : protected Base {
public:
    void accessProtected() {
        protected_member = 100; // Allowed
    }
};

Öffentliche Vererbung

  • Öffentliche und geschützte Mitglieder von Eine Basisklasse wird in der abgeleiteten Klasse öffentlich.
  • Private Mitglieder der Basisklasse bleiben erhalten privat in der abgeleiteten Klasse.
  • Abgeleitete Klassen können direkt oder über Zeiger auf alle öffentlichen Mitglieder der Basisklasse zugreifen.

Beispiel:

class Base {
public:
    int public_member;
};

class Derived : public Base {
public:
    void accessPublic() {
        public_member = 200; // Allowed
    }
};

Überlegungen:

  • Zugriffsspezifizierer gilt pro Klasse, nicht pro Objekt.
  • Abgeleitete Klassen können nur auf Mitglieder ihrer eigenen Basisklassenobjekte zugreifen.
  • Freunde können auf alle Mitglieder einer Klasse zugreifen, unabhängig von Zugriffsspezifizierern.

Das obige ist der detaillierte Inhalt vonWie wirken sich Zugriffsspezifizierer (privat, geschützt, öffentlich) auf die Zugänglichkeit von Mitgliedern bei der Vererbung aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn