Heim >Backend-Entwicklung >C++ >Wie wirken sich Zugriffsspezifizierer auf die Barrierefreiheit von Mitgliedern bei der C-Vererbung aus?

Wie wirken sich Zugriffsspezifizierer auf die Barrierefreiheit von Mitgliedern bei der C-Vererbung aus?

Barbara Streisand
Barbara StreisandOriginal
2024-12-26 03:27:08465Durchsuche

How Do Access Specifiers Affect Member Accessibility in C   Inheritance?

Zugriffsspezifizierer bei der Vererbung verstehen

In der objektorientierten Programmierung sind Zugriffsspezifizierer Schlüsselwörter, die die Zugänglichkeit von Klassenmitgliedern steuern. Beim Erben von einer Basisklasse hängt die Zugänglichkeit ihrer Mitglieder in der abgeleiteten Klasse von den während der Vererbung verwendeten Zugriffsspezifizierern ab.

Arten der Vererbung

C unterstützt drei Typen der Vererbung:

  • Öffentlich Vererbung: Öffentliche Mitglieder der Basisklasse werden öffentliche Mitglieder der abgeleiteten Klasse. Geschützte Mitglieder werden in der abgeleiteten Klasse geschützt.
  • Geschützte Vererbung: Öffentliche Mitglieder der Basisklasse werden zu geschützten Mitgliedern der abgeleiteten Klasse. Geschützte Mitglieder werden in der abgeleiteten Klasse geschützt.
  • Private Vererbung: Öffentliche und geschützte Mitglieder der Basisklasse werden private Mitglieder der abgeleiteten Klasse.

Zugriffsregeln für Mitglieder

Hier erfahren Sie, wie sich die Zugriffsebene von Mitgliedern während der Vererbung basierend auf ändert Verwendeter Zugriffsspezifizierer:

Öffentliche und geschützte Vererbung:

  • Öffentliche Mitglieder der Basisklasse bleiben in der abgeleiteten Klasse öffentlich oder geschützt.
  • Geschützte Mitglieder der Basisklasse bleiben in der abgeleiteten Klasse geschützt Klasse.

Private Vererbung:

  • Öffentliche und geschützte Mitglieder der Basisklasse verlieren ihre Zugriffsspezifizierer und werden in der abgeleiteten Klasse privat Klasse.

Beispiel:

class Base {
public:
    int public_member;
protected:
    int protected_member;
    int private_member; // private members are not inherited
};

class Derived1 : public Base {
public:
    void access_member() {
        // Access rules:
        public_member = 10; // allowed
        protected_member = 20; // allowed
        // private_member = 30; // not accessible
    }
};

class Derived2 : protected Base {
public:
    void access_member() {
        // Access rules:
        public_member = 10; // allowed
        protected_member = 20; // allowed
        // private_member = 30; // not accessible
    }
};

class Derived3 : private Base {
public:
    void access_member() {
        // Access rules:
        public_member = 10; // not accessible
        protected_member = 20; // not accessible
        // private_member = 30; // not accessible
    }
};

Best Practices für die Vererbung

Bei der Auswahl eines Zugriffsspezifizierers für Beachten Sie bei der Vererbung die folgenden Richtlinien:

  • Standardeinstellung ist „privat“. sofern nicht anders erforderlich:Private schützt die interne Implementierung der Klasse.
  • Verwenden Sie protected, um Funktionalität für abgeleitete Klassen verfügbar zu machen.
  • Verwenden Sie public sparsamda es den Zugriff auf Mitglieder außerhalb der Klassenhierarchie ermöglicht.
  • Vermeiden Sie die öffentliche Vererbung von private oder geschützte Mitglieder: Dies unterbricht die Kapselung und kann zu unerwartetem Verhalten führen.

Das obige ist der detaillierte Inhalt vonWie wirken sich Zugriffsspezifizierer auf die Barrierefreiheit von Mitgliedern bei der C-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