Сравнителна таблица
Основа за сравнение | частен | Защитена |
---|---|---|
Наследяване на свойство на извлечения клас | Извлеченият клас няма достъп до частни членове от основния клас. | Извлеченият клас може да има достъп до защитени от базовия клас членове. |
Достъпност | Частните членове на класа са недостъпни извън обхвата на класа. | Защитените членове на класа са недостъпни извън обхвата на класа, с изключение на класа, получен незабавно. |
Достъпно от собствения клас | да | да |
Достъпно от производния клас | Не | да |
Достъпни отвън | Не | Не |
Определение за частно
Членовете на класа, обявени за частни, могат да бъдат извлечени само в рамките на класа. С други думи, членовете, декларирани в частната секция на класа, могат да бъдат достъпни само от функцията за приятели и членската функция на класа. Частните членове не могат да се получават директно от извлечения клас и са недостъпни извън обхвата на класа.
Програмата C ++ показва концепцията за частни спецификатори за достъп.
#include using namespace std; клас A {private: int i; public: void get () {cout <> i; }}; клас B: публичен A {public: void show () {i ++; cout << "Вашето въведено число след incrementcpp"> # включва използването на пространство от имена std; клас бозайник {public: void mammalMethod (void) {cout << "Попада под категорията на бозайници."В горепосочената програма се създава един обект от дъщерния клас с име “ob”, а членската функция на родителския клас може да бъде достъпна чрез метод на извикващия клас “marine_mammalMethod”. Въпреки че родителският метод не може да бъде достъпен директно с обект “ob”.
Определение на защитените
Членовете на класа, декларирани като защитени в клас, могат да бъдат достъпни само чрез функцията член и функцията приятел на класа. Тези защитени членове не могат да бъдат достъпни извън обхвата на класа, с изключение на дъщерния клас (веднага се извлича от него). Той служи на ограничената цел в наследяването и наследява свойствата по ограничен начин.
Дадената по-долу програма C ++ илюстрира концепцията за спецификатори на защитен достъп.
#include using namespace std; class account1 {protected: int x, y; // достъпен за произволен клас public: void set (int a, int b) {x = a; у = б; } void show () {cout <В горния пример детевият клас наследява свойствата на базовия клас, защото членовете на данните са обявени за публични или защитени. Не би било възможно, ако x и y бяха обявени за частни в базовия клас.
Ключови разлики между частни и защитени в C ++
- Защитената ключова дума може да се използва за изграждане на членове на клас, които са частни за техния клас, но могат да бъдат наследени и използвани от извлечения клас. Обратно, това не е възможно, докато се използва частен, защото частните членове не могат да бъдат наследени директно от извлечения клас.
- Когато базовият клас се наследи с помощта на частния спецификатор за достъп, той прави всички публични и защитени членове на базовия клас частните членове на извлечения клас. За разлика от това не е така в спецификаторите на защитения достъп.
заключение
Частни и защитени са спецификаторите за достъп, които се използват за различна видимост на класа и неговите членове. Защитените обаче са по-гъвкави от частните.