Im vorherigen Abschnitt haben wir die Definitionsmethode abgeleiteter Klassen unter Verwendung der öffentlichen Vererbung gesehen. Es gibt hier tatsächlich drei Methoden, nämlich öffentliche Vererbung , private Vererbung und geschützte Vererbung .
Der Hauptunterschied zwischen verschiedenen Vererbungsmethoden liegt in den Änderungen der Zugriffsrechte von Mitgliedern mit unterschiedlichen Zugriffsrechten in der Basisklasse in der abgeleiteten Klasse. Nachfolgend werden sie einzeln vorgestellt.
1. Öffentliches Erbe:
Im öffentlichen Vererbungsmodus sind seine Merkmale wie folgt:
(1) Öffentliche Mitglieder in der Basisklasse sind weiterhin öffentliche Mitglieder in der abgeleiteten Klasse. Natürlich kann sowohl auf Mitgliedsfunktionen als auch auf abgeleitete Klassenobjekte in der abgeleiteten Klasse zugegriffen werden.
(2) Auf private Mitglieder in der Basisklasse können Mitglieder der abgeleiteten Klasse oder Objekte der abgeleiteten Klasse nicht zugreifen.
(3) Die geschützten Mitglieder in der Basisklasse sind weiterhin geschützte Typen in der abgeleiteten Klasse und können über die Mitgliedsfunktionen der abgeleiteten Klasse aufgerufen werden, auf die abgeleiteten Klassenobjekte kann jedoch nicht zugegriffen werden.
2. Private Erbschaft:
Bei privater Vererbung lauten die Zugriffsrechte der drei Mitglieder des öffentlichen Typs, des privaten Typs und des geschützten Typs wie folgt:
(1) Die öffentlichen und geschützten Typen der Basisklasse werden nach der Aufnahme durch die private Vererbung der abgeleiteten Klasse zu privaten Typen der abgeleiteten Klasse, dh auf sie kann in den Mitgliedsfunktionen der Klasse zugegriffen werden und nicht auf die außerhalb der Klasse zugegriffen werden kann.
(2) Auf private Mitglieder der Basisklasse kann in der abgeleiteten Klasse nicht zugegriffen werden, weder innerhalb noch außerhalb der Klasse.
Wir können sehen, dass bei einer privaten Ableitung die privaten Mitglieder der Basisklasse nicht mehr in der abgeleiteten Klasse oder sogar der abgeleiteten Unterklasse verwendet werden können und keine Bedeutung haben, sodass diese Art der Verwendung relativ selten ist.
3. Erbe schützen:
Die Vererbung geschützter Typen weist die folgenden Merkmale auf:
(1) Öffentliche Mitglieder und geschützte Typmitglieder der Basisklasse sind geschützte Mitglieder in der abgeleiteten Klasse.
(2) Auf private Mitglieder der Basisklasse kann in der abgeleiteten Klasse nicht direkt zugegriffen werden.
Es ist ersichtlich, dass die Mitgliedsfunktionen in der abgeleiteten Klasse auf die öffentlichen Mitglieder und geschützten Mitglieder der Basisklasse zugreifen können, jedoch nicht über das abgeleitete Klassenobjekt außerhalb der Klasse auf sie zugegriffen werden kann. Ebenso kann auf private Mitglieder in der Basisklasse nicht über Mitgliedsfunktionen in der abgeleiteten Klasse oder über Klassenobjekte zugegriffen werden.
Im Folgenden wird weiterhin der Programmcode von Uhr und Wecker als Beispiel verwendet, um mit verschiedenen Arten von Zugriffsproblemen zu experimentieren, die sich aus unterschiedlichen Berechtigungen in der Basisklasse ergeben. Für öffentliche Typen können sie in Mitgliedsmethoden abgeleiteter Klassen oder außerhalb der Klasse aufgerufen werden. Die Kompilierung läuft wie folgt fehlerfrei ab:
Aber für private Mitglieder versuchen wir, eine Codezeile hinzuzufügen, siehe Zeile 41. In der Mitgliedsfunktion der abgeleiteten Klasse wird die von der Basisklasse übernommene H-Variable zugewiesen und während der Kompilierung wird ein Fehler gemeldet. Siehe das rote Feld und die Eingabeaufforderung unten:
Sie können die Fehlermeldung „H ist ein privater Typ“ sehen.
Für geschützte Typen versuchen wir, eine geschützte Typvariable w in der Basisklasse zu definieren und sie in der öffentlich geerbten abgeleiteten Klassenmethode zuzuweisen und zu verwenden. Sie können die Situation im Bild unten sehen, das vollständig zugänglich ist. Wie unten gezeigt:
Bei der privaten Vererbung wird auf Mitglieder öffentlicher Typen außerhalb der Klasse zugegriffen:
Sie können selbst experimentieren, um den Zugriff verschiedener Mitgliedstypen im Rahmen der öffentlichen Vererbung zu überprüfen.
Nach dem Studium und Experimenten können wir Folgendes zusammenfassen:
1. Auf private Mitglieder der Basisklasse können Mitgliedsfunktionen innerhalb der abgeleiteten Klasse oder außerhalb der Klasse nicht zugreifen, unabhängig von abgeleiteten Berechtigungen.
2. Private Vererbung: Unabhängig vom ursprünglichen Typ der Basisklasse kann nicht über Mitgliedsfunktionen außerhalb der abgeleiteten Klasse darauf zugegriffen werden.
3. Die Zugriffsrechte der Mitglieder, die von der abgeleiteten Klasse aus der Basisklasse übernommen werden, sind die niedrigsten der Zugriffsrechte in der Basisklasse und der abgeleiteten Rechte zum Zeitpunkt der Ableitung.
Und basierend auf der Kombination aus abgeleiteten Berechtigungen, in der Basisklasse definierten Berechtigungen und unterschiedlichen Zugriffszeiten innerhalb der abgeleiteten Klasse und außerhalb der Klasse wird die folgende Tabelle aufgeführt:
öffentliches Erbe | geschütztes Erbe | privates Erbe | ||||
Standort besuchen | innerhalb der Klasse | Außerhalb des Unterrichts | innerhalb der Klasse | Außerhalb des Unterrichts | innerhalb der Klasse | Außerhalb des Unterrichts |
öffentliche Mitglieder | Kann | Kann | Kann | Kippen | Kann | Kippen |
Mitglieder schützen | Kann | Kippen | Kann | Kippen | Kann | Kippen |
Privatmitglied | Kippen | Kippen | Kippen | Kippen | Kippen | Kippen |