Srovnávací graf
Základ pro srovnání | Soukromé | Chráněný |
---|---|---|
Zdědění vlastnosti odvozené třídy | Odvozená třída nemůže přistupovat k soukromým členům základní třídy. | Odvozená třída může přistupovat k chráněným členům základní třídy. |
Přístupnost | Soukromí členové třídy jsou mimo rozsah třídy nepřístupní. | Chráněné členy třídy jsou nepřístupné mimo rozsah třídy kromě třídy odvozené okamžitě. |
Přístupné z vlastní třídy | Ano | Ano |
Přístupné z odvozené třídy | Ne | Ano |
Přístupné zvenčí | Ne | Ne |
Definice soukromé
Členové třídy deklarovaní jako soukromí mohou být načteni pouze ve třídě. Jinými slovy, členové deklarovaní v privátní sekci třídy mohou být zpřístupňováni pouze funkcí kamaráda a členskou funkcí třídy. Soukromí členové nejsou dosažitelní do odvozené třídy přímo a jsou nepřístupní mimo rozsah třídy.
Program C ++ zobrazuje koncept specifikátorů privátního přístupu.
#include using namespace std; třída A {private: int i; public: void get () {cout <> i; }}; třída B: public A {public: void show () {i ++; cout << "Vaše zadané číslo po incrementcpp"> # obsahuje použití jmenného prostoru std; třída savec {public: void mammalMethod (void) {cout << "To spadá do kategorie savců." <Ve výše uvedeném programu je jeden objekt třídy dítěte vytvořen s názvem „ob“ a členská funkce nadřazené třídy může být zpřístupněna prostřednictvím metody volání třídy dítěte „marine_mammalMethod“. Přestože k rodičovské metodě nelze přistupovat přímo s objektem „ob“.
Definice chráněných
Členové třídy deklarovaní jako chránění ve třídě mohou být přístupní pouze prostřednictvím funkce člena a funkce přítele třídy. K těmto chráněným členům nelze přistupovat mimo rozsah třídy s výjimkou podřízené třídy (bezprostředně z ní odvozené). Slouží omezenému účelu v dědictví a omezuje vlastnosti.
Níže uvedený program C ++ ilustruje koncepci chráněných specifikátorů přístupu.
#include using namespace std; class account1 {protected: int x, y; // přístupné odvozené třídě public: void set (int a, int b) {x = a; y = b; } void show () {cout <Ve výše uvedeném příkladu podřízená třída dědí vlastnosti základní třídy, protože členové dat jsou deklarováni jako veřejní nebo chráněni. Nebylo by možné, kdyby x a y byly v základní třídě prohlášeny za soukromé.
Klíčové rozdíly mezi soukromými a chráněnými v jazyce C ++
- Chráněné klíčové slovo lze použít k vytvoření členů třídy, které jsou soukromé pro jejich třídu, ale mohou být zděděny a použity odvozenou třídou. To naopak není možné při použití privátní, protože soukromé členy nelze zdědit přímo na odvozenou třídu.
- Když je základní třída zděděna pomocí specifikátoru soukromého přístupu, vytvoří všechny veřejné a chráněné členy základní třídy, soukromé členy odvozené třídy. V opačném případě tomu tak není u specifikátorů chráněných přístupů.
Závěr
Soukromé a chráněné jsou specifikátory přístupu, které se používají pro nastavení viditelnosti třídy a jejích členů odlišně. Chráněný je však flexibilnější než soukromý.