Зміст курсу
C++ ООП
C++ ООП
Модифікатори Доступу у Спадкуванні
Модифікатори доступу відіграють важливу роль в об'єктно-орієнтованому програмуванні, особливо при наслідуванні. Вони визначають, як члени (атрибути та методи) базового класу можуть бути доступні для похідних класів. Розуміння цих модифікаторів є необхідним для створення ефективних класів і підтримки інкапсуляції та цілісності даних.
Типи доступу при наслідуванні
Клас може бути похідним від іншого класу. Похідний клас наслідує члени базового класу, але доступність цих успадкованих членів залежить як від модифікатора доступу в базовому класі, так і від типу наслідування.
Base Class public | Base Class protected | Base Class private | |
---|---|---|---|
public | Public in Derived Class | Protected in Derived Class | Not Accessible |
protected | Protected in Derived Class | Protected in Derived Class | Not Accessible |
private | Private in Derived Class | Private in Derived Class | Not Accessible |
public.cpp
protected.cpp
private.cpp
class Derived : public Base { // publicMember is public // protectedMember is protected // privateMember is not accessible };
Висновок щодо контролю доступу та наслідування
У об'єктно-орієнтованому наслідуванні private
-члени базового класу недоступні для похідних класів, що захищає їх від зміни або отримання. Protected
-члени доступні лише всередині підкласу, тоді як public
-члени доступні зовні. Ви можете експериментувати з цим, використовуючи наведений нижче фрагмент коду.
main.cpp
class Base { public: int publicAttribute; protected: int protectedAttribute; private: int privateAttribute; }; class PublicDerived : public Base {}; class ProtectedDerived : protected Base {}; class PrivateDerived : private Base {}; int main() { PublicDerived obj1; ProtectedDerived obj2; PrivateDerived obj3; }
Члени з модифікатором Protected
, доступні у похідних та подальших похідних класах, виконують роль проміжної ланки між елементами з модифікаторами private
та public
.
Конструктори та деструктори автоматично викликаються для об'єктів похідного класу, що забезпечує коректну ініціалізацію та очищення ресурсів. Для прямого доступу до цих елементів базового класу конструктори та деструктори мають бути оголошені як public
.
Дякуємо за ваш відгук!