Grafico comparativo
Base per il confronto | Privato | protetta |
---|---|---|
Ereditare la proprietà alla classe derivata | La classe derivata non può accedere ai membri privati della classe base. | La classe derivata può accedere ai membri protetti della classe base. |
Accessibilità | I membri privati della classe non sono accessibili nell'ambito della classe. | I membri protetti della classe sono inaccessibili fuori dall'ambito della classe tranne la classe derivata immediatamente. |
Accessibile dalla propria classe | sì | sì |
Accessibile dalla classe derivata | No | sì |
Accessibile dall'esterno | No | No |
Definizione di privato
I membri della classe dichiarati come privati possono essere recuperati solo all'interno della classe. In altre parole, i membri dichiarati nella sezione privata della classe possono essere raggiunti solo dalla funzione friend e dalla funzione membro della classe. I membri privati non sono accessibili direttamente alla classe derivata e sono inaccessibili al di fuori dell'ambito della classe.
Il programma C ++ mostra il concetto di specificatori di accesso privati.
# include using namespace std; classe A {privato: int i; public: void get () {cout <> i; }}; classe B: public A {public: void show () {i ++; cout << "\ n Il tuo numero inserito dopo incrementcpp"> # include usando namespace std; mammifero di classe {public: void mammalMethod (void) {cout << "Appartisce alla categoria dei mammiferi." <Nel programma sopra descritto, un oggetto della classe figlio viene creato con il nome "ob" e la funzione membro della classe genitore può essere richiamata chiamando il metodo della classe figlio "marine_mammalMethod". Sebbene non sia possibile accedere direttamente al metodo principale con l'oggetto "ob".
Definizione di Protetto
I membri della classe dichiarati come protetti in una classe possono essere accessibili solo attraverso la funzione membro e la funzione amico della classe. Non è possibile accedere a questi membri protetti dall'ambito della classe tranne la classe figlio (derivata immediatamente da esso). Serve allo scopo limitato nell'ereditarietà e eredita le proprietà in modo limitato.
Il seguente programma C ++ illustra il concetto di specificatori di accesso protetto.
# include using namespace std; class account1 {protected: int x, y; // accessibile alla classe derivata public: void set (int a, int b) {x = a; y = b; } void show () {cout <Nell'esempio precedente, la classe figlio eredita le proprietà della classe base perché i membri dati sono dichiarati come pubblici o protetti. Non sarebbe possibile se x e y fossero stati dichiarati come privati nella classe base.
Differenze chiave tra private e protette in C ++
- La parola chiave protetta può essere utilizzata per creare membri di classe privati della loro classe, ma che possono essere ereditati e utilizzati dalla classe derivata. Al contrario, questo non è possibile durante l'utilizzo privato, perché i membri privati non possono essere ereditati direttamente nella classe derivata.
- Quando la classe base viene ereditata utilizzando lo specificatore di accesso privato, rende tutti i membri pubblici e protetti della classe base, i membri privati della classe derivata. Per contro, questo non è il caso degli specificatori di accesso protetti.
Conclusione
Privati e protetti sono gli specificatori di accesso che vengono utilizzati per impostare la visibilità della classe e dei suoi membri in modo diverso. Tuttavia, protetto è più flessibile del privato.