Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Модифікатори Доступу у Спадкуванні | Огляд Наслідування
C++ ООП
course content

Зміст курсу

C++ ООП

C++ ООП

1. Основи ООП у C++
2. Конструктори та Деструктори
3. Огляд Інкапсуляції
4. Огляд Наслідування
5. Огляд Поліморфізму

book
Модифікатори Доступу у Спадкуванні

Модифікатори доступу відіграють важливу роль в об'єктно-орієнтованому програмуванні, особливо при наслідуванні. Вони визначають, як члени (атрибути та методи) базового класу можуть бути доступні для похідних класів. Розуміння цих модифікаторів є необхідним для створення ефективних класів і підтримки інкапсуляції та цілісності даних.

Типи доступу при наслідуванні

Клас може бути похідним від іншого класу. Похідний клас наслідує члени базового класу, але доступність цих успадкованих членів залежить як від модифікатора доступу в базовому класі, так і від типу наслідування.

Base Class publicBase Class protectedBase 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

public.cpp

protected.cpp

protected.cpp

private.cpp

private.cpp

copy
12345
class Derived : public Base { // publicMember is public // protectedMember is protected // privateMember is not accessible };

Висновок щодо контролю доступу та наслідування

У об'єктно-орієнтованому наслідуванні private-члени базового класу недоступні для похідних класів, що захищає їх від зміни або отримання. Protected-члени доступні лише всередині підкласу, тоді як public-члени доступні зовні. Ви можете експериментувати з цим, використовуючи наведений нижче фрагмент коду.

main.cpp

main.cpp

copy
1234567891011121314151617181920
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; }
Note
Примітка

Члени з модифікатором Protected, доступні у похідних та подальших похідних класах, виконують роль проміжної ланки між елементами з модифікаторами private та public.

Конструктори та деструктори автоматично викликаються для об'єктів похідного класу, що забезпечує коректну ініціалізацію та очищення ресурсів. Для прямого доступу до цих елементів базового класу конструктори та деструктори мають бути оголошені як public.

question mark

Що визначає, як члени базового класу можуть бути доступні у похідному класі?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

course content

Зміст курсу

C++ ООП

C++ ООП

1. Основи ООП у C++
2. Конструктори та Деструктори
3. Огляд Інкапсуляції
4. Огляд Наслідування
5. Огляд Поліморфізму

book
Модифікатори Доступу у Спадкуванні

Модифікатори доступу відіграють важливу роль в об'єктно-орієнтованому програмуванні, особливо при наслідуванні. Вони визначають, як члени (атрибути та методи) базового класу можуть бути доступні для похідних класів. Розуміння цих модифікаторів є необхідним для створення ефективних класів і підтримки інкапсуляції та цілісності даних.

Типи доступу при наслідуванні

Клас може бути похідним від іншого класу. Похідний клас наслідує члени базового класу, але доступність цих успадкованих членів залежить як від модифікатора доступу в базовому класі, так і від типу наслідування.

Base Class publicBase Class protectedBase 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

public.cpp

protected.cpp

protected.cpp

private.cpp

private.cpp

copy
12345
class Derived : public Base { // publicMember is public // protectedMember is protected // privateMember is not accessible };

Висновок щодо контролю доступу та наслідування

У об'єктно-орієнтованому наслідуванні private-члени базового класу недоступні для похідних класів, що захищає їх від зміни або отримання. Protected-члени доступні лише всередині підкласу, тоді як public-члени доступні зовні. Ви можете експериментувати з цим, використовуючи наведений нижче фрагмент коду.

main.cpp

main.cpp

copy
1234567891011121314151617181920
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; }
Note
Примітка

Члени з модифікатором Protected, доступні у похідних та подальших похідних класах, виконують роль проміжної ланки між елементами з модифікаторами private та public.

Конструктори та деструктори автоматично викликаються для об'єктів похідного класу, що забезпечує коректну ініціалізацію та очищення ресурсів. Для прямого доступу до цих елементів базового класу конструктори та деструктори мають бути оголошені як public.

question mark

Що визначає, як члени базового класу можуть бути доступні у похідному класі?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 2
some-alt