Porovnávacia tabuľka
Základ pre porovnanie | Súkromné | chránený |
---|---|---|
Zdedenie majetku na odvodenú triedu | Odvodená trieda nemôže pristupovať k súkromným členom základnej triedy. | Odvodená trieda môže pristupovať k chráneným členom základnej triedy. |
prístupnosť | Súkromní členovia triedy sú z rozsahu triedy nedostupné. | Chránené členovia triedy sú z rozsahu triedy neprístupné s výnimkou okamžitej triedy. |
Dostupné z vlastnej triedy | Áno | Áno |
Prístupný z odvodenej triedy | žiadny | Áno |
Prístupné zvonku | žiadny | žiadny |
Definícia súkromného
Členovia tried, ktoré boli vyhlásené za súkromné, je možné získať iba v rámci triedy. Inými slovami, členovia deklarovaní v súkromnej sekcii tejto triedy môžu mať prístup len funkciu priateľa a funkciu člena triedy. Súkromní členovia nemožno získať odvodenej triede priamo a sú z rozsahu triedy nedostupní.
Program C ++ zobrazuje koncepciu špecifikátorov súkromného prístupu.
# include using namespace std; trieda A {súkromný: int i; verejné: void get () {cout <> i; }}; trieda B: verejná A {public: void show () {i ++; cout << "\ n Zadané číslo po incrementcpp"> # zahŕňa použitie namespace std; trieda cicavcov {public: void mammalMethod (void) {cout << "Patrí do kategórie cicavcov." <Vo vyššie uvedenom programe sa vytvorí jeden objekt podradenej triedy s názvom "ob" a členská funkcia materskej triedy sa dá získať prostredníctvom metódy volania detskej triedy "marine_mammalMethod". Napriek tomu nemôže byť prístupová metóda rodičom priamo s objektom "ob".
Definícia chráneného
Členovia tried, ktoré boli vyhlásené za chránené v triede, môžu byť prístupné iba prostredníctvom funkcie člena a priateľskej triedy. Títo chránení členovia nemožno pristupovať mimo rozsah triedy s výnimkou triedy detí (okamžite od nich odvodené). Slúži na obmedzený účel v dedičstve a zdedí vlastnosti obmedzene.
Nasledujúci program C ++ ilustruje koncepciu špecifikátorov chráneného prístupu.
# include using namespace std; class account1 {chrániť: int x, y; // dostupný pre odvodenú verejnú triedu: void set (int a, int b) {x = a; y = b; } prázdne zobrazenie () {cout <Vo vyššie uvedenom príklade detská trieda zdedí vlastnosti základnej triedy, pretože členovia údajov sú deklarovaní ako verejní alebo chránení. Nebolo by možné, keby x a y boli vyhlásené za súkromné v základnej triede.
Kľúčové rozdiely medzi súkromným a chráneným v C ++
- Chránené kľúčové slovo sa môže použiť na zostavenie členov triedy, ktoré sú súkromné pre svoju triedu, ale môžu byť zdedené a použité odvodenou triedou. Naopak, toto nie je možné používať pri súkromí, pretože súkromní členovia nemožno zdediť priamo do odvodenej triedy.
- Keď sa základná trieda zdedí použitím špeciálneho prístupového špecifikátora, sprístupní všetkým verejným a chráneným členom základnej triedy, súkromným členom odvodenej triedy. Na rozdiel od toho tomu tak nie je v prípade špecifikátorov chráneného prístupu.
záver
Súkromné a chránené sú špecifikátory prístupu, ktoré sa používajú na nastavenie viditeľnosti triedy a jej členov inak. Chránená je však flexibilnejšia ako súkromná.