Підсумок
Клас, що називається похідним класом, може успадковувати можливості іншого класу, який називається базовим. При цьому в похідному класі можуть бути власні можливості, оскільки він є більш спеціалізованою версією базового класу. Успадковування надає ефективний спосіб розширення можливостей існуючих класів і розробки програм з використанням ієрархічних зв’язків між класами.
Важливим питанням є доступність членів базового класу для методів похідних класів та об’єктів похідних класів. До полів та методів базового класу, оголошених як protected, можуть мати доступ тільки методи похідного класу. Об’єкти зовнішніх класів, включаючи похідний клас, в цьому випадку доступу до базового класу не мають. Класи можуть бути загальними і приватними похідними базового класу. Об’єкти загального похідного класу мають доступ до членів базового класу, оголошених як public, а об’єкти приватного похідного класу доступу до них не мають.
Клас може бути похідним більше ніж одного базового класу. Цей випадок називається множинним успадковуванням. Також клас може міститися всередині іншого класу.
Включення – це відношення типу «має» або «є частиною», при цьому один клас містить об’єкти іншого класу.
Успадковування дозволяє використовувати програмний код повторно: в похідному класі можна розширити можливості базового класу без його модифікації навіть не маючи доступу до коду. Це призводить до появи гнучкості в процесі розробки програмного забезпечення і розширенню ролі програмних розробників.
Питання по темі
1. Призначення успадковування полягає в тому, щоб:
а) створювати більш загальні класи в більш спеціалізованих
б) передавати аргументи об’єктам класів
в) додавати можливості до існуючих класів без їх модифікації
г) покращити приховування даних та їх інкапсуляцію
2. Перевага використання успадковування полягає в:
а) забезпеченні розвитку класу шляхом природного відбору
б) полегшення створення класу
в) повторного використання коду
3. Вкажіть правильний перший рядок опису класу Bosworth, який є public-похідним класу Alphsonso
а) Alphonso::Bosworth(public)
б) class Bosworth: public Alphonso
в) public class Bosworth: Alphonso
4. Члени базового класу для доступу до них методів похідного класу повинні бути оголошені як
а) public або protected
б) public або private
в) private або protected
5. Нехай базовий клас містить метод basefunc(), а похідний клас не має методу з таким іменем. чи може об’єкт похідного класу мати доступ до методу basefunc()?
а) так, завжди
б) ні
в) так, якщо цей метод не є прихованим
6. Чи є істинним такий вираз: якщо конструктор похідного класу не визначений, то об’єкти цього класу будуть використовувати конструктор базовго класу?
а) так
б) ні
7. Припустимо, що базовий і похідний класи включають в себе методи з однаковими іменами. Який з методів буде викликаний об’єктом похідного класу, якщо не використовується операція дозволу імені?
а) метод похідного класу
б) метод базового класу
8. Оператор дозволу звичайно:
а) обмежує видимість змінних для певних методів
б) визначає, від якого базового класу створений похідний
в) розв’язує невизначеності
9. Припустімо, що існує клас Derv, похідний від базового класу Base. Напишіть оголошення конструктора похідного класу, який приймає один цілий аргумент і передає його в конструктор базового класу.
а) Derv(int i):Base(i) {};
б) Derv(Base(int i));
в)Base::Derv(int i);
10. Припустімо, що клас Derv є приватним похідним класу Base. Ми визначаємо об’єкт класу Derv, розміщений в функції main(). Через нього ми можемо дістати доступ до:
а) членів класу Derv, оголошених як public
б) членів класу Derv, оголошених як protected
в) членів класу Derv, оголошених як private
г) членів класу Base, оголошених як public
д) членів класу Base, оголошених як protected
е) членів класу Base, оголошених як private
11. Чи істинне твердження: клас D може бути похідним класу С, який є похідний від класу В, для якого є базовим клас А?
а) так
б) ні
12. Припустімо, що клас Derv є похідним від класу Base. Обидва класи містять метод func без аргументів. Як правильно викликати метод func() базового класу з методу класу Derv?
а) func();
б) Base::func();
в) Base:func();
13. Як правильно описати клас С, що є похідним класів А і В?
а) class C: public A, public B;
б) class C: public A B;
в) class C::public A, public B;
14. Чи істинне твердження: неможливо зробити об’єкт одного класу членом іншого класу?
а) так
б) ні
15. Включення – це
а) форма реалізації
б) форма узагальнення
в) відношення типу «має»
Дата добавления: 2015-08-26; просмотров: 972;