Diagramă de comparație
Bazele de comparație | Privat | Protejat |
---|---|---|
Moștenirea proprietății în clasa derivată | Categoria derivată nu poate accesa membrii privați de clasă de bază. | Clasa derivată poate accesa membrii protejați de clasa de bază. |
Accesibilitate | Membrii privați ai clasei sunt inaccesibili din domeniul de clasă. | Membrii protejați ai clasei sunt inaccesibili din domeniul de clasă, cu excepția clasei derivate imediat. |
Accesibil din clasa proprie | da | da |
Accesibil din clasa derivată | Nu | da |
Accesibil din exterior | Nu | Nu |
Definiția Private
Membrii clasei declarați ca fiind privați pot fi recuperați numai în cadrul clasei. Cu alte cuvinte, membrii declarați în secțiunea privată a clasei pot fi accesați numai de funcția de prieten și funcția de membru a clasei. Membrii privați nu pot fi obținuți direct clasei derivate și sunt inaccesibile din domeniul de aplicare al clasei.
Programul C ++ prezintă conceptul de specificatori de acces privat.
# include folosind namespace std; clasa A {privat: int i; public: void get () {cout <> i; }}; clasa B: public A {public: void show () {i ++; cout << "\ n Numărul dvs. introdus după incrementcpp"> # include utilizarea spațiului de nume std; mamifer de clasă {public: void mammalMethod (void) {cout << "Este inclus în categoria mamiferelor." <În programul de mai sus, un obiect al clasei copil este creat cu numele "ob" iar funcția membră a clasei părinți poate fi accesată prin intermediul metodei clasei copil "marine_mammalMethod". Deși metoda parentală nu poate fi accesată direct cu obiectul "ob".
Definiția Protected
Membrii clasei declarați ca fiind protejați într-o clasă pot fi accesibili numai prin funcția de membru și prin funcția prietenă a clasei. Acești membri protejați nu pot fi accesați din domeniul de clasă, cu excepția clasei copil (derivată imediat din aceasta). Ea servește scopului restrâns în moștenire și moștenește proprietățile într-un mod limitat.
Programul C ++ de mai jos demonstrează conceptul de specificatori de acces protejați.
# include folosind namespace std; clasa cont1 {protejat: int x, y; // accesibil pentru clasa publica publica: set void (int a, int b) {x = a; y = b; } void show () {cout <În exemplul de mai sus, clasa copil moștenește proprietățile clasei de bază deoarece membrii de date sunt declarați publici sau protejați. Nu ar fi posibil ca x și y să fi fost declarate private în clasa de bază.
Diferențe cheie între privat și protejat în C ++
- Cuvântul cheie protejat poate fi folosit pentru a construi membri ai clasei care sunt privați pentru clasa lor, dar pot fi mosteniți și utilizați de clasa derivată. Dimpotrivă, acest lucru nu este posibil în timp ce se utilizează privat, deoarece membrii privați nu pot fi moșteniți direct la clasa derivată.
- Atunci când clasa de bază este moștenită utilizând specificatorul de acces privat, acesta face ca toți membrii publici și protejați ai clasei de bază, membrii privați ai clasei derivate. În schimb, acest lucru nu se întâmplă în cazul specificatorilor de acces protejați.
Concluzie
Privind și protejați sunt specifici de acces care sunt folosiți pentru a stabili vizibilitatea clasei și a membrilor săi în mod diferit. Cu toate acestea, protejat este mai flexibil decât privat.