Vergleichstabelle
Basis zum Vergleich | Privatgelände | Geschützt |
---|---|---|
Vererbung der Eigenschaft an die abgeleitete Klasse | Abgeleitete Klasse kann nicht auf private Mitglieder der Basisklasse zugreifen. | Abgeleitete Klasse kann auf geschützte Mitglieder der Basisklasse zugreifen. |
Zugänglichkeit | Die privaten Mitglieder der Klasse sind außerhalb des Klassenbereichs nicht erreichbar. | Auf die geschützten Mitglieder der Klasse kann aus dem Klassenbereich nicht zugegriffen werden, mit Ausnahme der unmittelbar abgeleiteten Klasse. |
Zugänglich aus eigener Klasse | Ja | Ja |
Zugriff über abgeleitete Klasse | Nein | Ja |
Von außen zugänglich | Nein | Nein |
Definition von Privat
Die als privat deklarierten Klassenmitglieder können nur innerhalb der Klasse abgerufen werden. Mit anderen Worten, auf die im privaten Abschnitt der Klasse deklarierten Member kann nur von der Friend-Funktion und der Member-Funktion der Klasse zugegriffen werden. Private Mitglieder können nicht direkt für die abgeleitete Klasse abgerufen werden und sind außerhalb des Klassenbereichs nicht verfügbar.
Das C ++ - Programm zeigt das Konzept privater Zugriffsbezeichner.
#include using namespace std; Klasse A {privat: int i; public: void get () {cout <> i; }}; Klasse B: public A {public: void show () {i ++; cout << "\ n Ihre eingegebene Nummer nach incrementcpp"> # include using Namespace std; Klasse Säugetier {public: void mammalMethod (void) {cout << "Es fällt unter die Säugetierkategorie." <In dem oben angegebenen Programm wird ein Objekt der Kindklasse mit dem Namen "ob" erstellt, und die Memberfunktion der Elternklasse kann über die Kindmethode "marine_mammalMethod" aufgerufen werden. Auf die übergeordnete Methode kann jedoch nicht direkt mit dem Objekt „ob“ zugegriffen werden.
Definition von Geschützt
Die in einer Klasse als geschützt deklarierten Klassenmitglieder können nur über die Member- und Friend-Funktion der Klasse aufgerufen werden. Auf diese geschützten Member kann nicht aus dem Klassenbereich mit Ausnahme der untergeordneten Klasse (unmittelbar davon abgeleitet) zugegriffen werden. Es dient dem eingeschränkten Zweck der Vererbung und erbt die Eigenschaften in begrenztem Umfang.
Das unten angegebene C ++ - Programm veranschaulicht das Konzept geschützter Zugriffsbezeichner.
#include using namespace std; class account1 {protected: int x, y; // für abgeleitete Klassen zugänglich public: void set (int a, int b) {x = a; y = b; } void show () {cout <Im obigen Beispiel erben die untergeordnete Klasse die Eigenschaften der Basisklasse, da die Datenmitglieder als public oder protected deklariert sind. Es wäre nicht möglich, wenn x und y in der Basisklasse als privat deklariert worden wären.
Hauptunterschiede zwischen privat und geschützt in C ++
- Das protected-Schlüsselwort kann zum Erstellen von Klassenmitgliedern verwendet werden, die für ihre Klasse privat sind, aber von der abgeleiteten Klasse geerbt und verwendet werden können. Umgekehrt ist dies bei der Verwendung von privat nicht möglich, da private Mitglieder nicht direkt an die abgeleitete Klasse vererbt werden können.
- Wenn die Basisklasse mit dem privaten Zugriffsbezeichner geerbt wird, werden alle öffentlichen und geschützten Mitglieder der Basisklasse zu privaten Mitgliedern der abgeleiteten Klasse. Im Gegensatz dazu ist dies bei geschützten Zugriffsspezifizierern nicht der Fall.
Fazit
Privat und geschützt sind die Zugriffsbezeichner, mit denen die Sichtbarkeit der Klasse und ihrer Member unterschiedlich festgelegt wird. Geschützt ist jedoch flexibler als privat.