Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекції 1-8.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
6.11 Mб
Скачать

1. Одинична спадковість

Порядок виконання конструкторів визначається таким чином: спочатку викликаються вгору (за ієрархією) всі конструктори базо­вих класів; в кінці викликаються конструктори похідних класів.

Деструктори в похідному класі викликаються у порядку, зво­ротному викликам конструкторів.

Класи-спадкоємці, окрім своїх власних членів, включають від­криті і захищені члени батьківського класу, його закриті члени при цьому не успадковуються. Захищені члени можна вико­ристовувати тільки методам класу-спадкоємця. Цей базовий клас і класи-спадкоємці можна використовувати для створення об'єктів.

Створюючи об'єкт-спадкоємець, викликаємо його конструктор і конструктор базового класу. Якщо базовий клас не має конструк­тора за умовчанням, слід викликати конструктор з параметрами* використовуючи ключове слово base в оголошенні конструктора

похідного класу.

Можна створити багаторівневу ієрархію спадковості. При цьо­му перераховані в описі класу-спадкоємця базові класи успадкову­ються безпосередньо, останні успадковуються побічно. У констру­кторі спадкоємця можна викликати тільки конструктор класу, ус­падкованого прямо.

Порядок виконання конструкторів визначається таким чином: спочатку викликаються вгору за ієрархією всі конструктори базо­вих класів; в кінці викликаються конструктори похідних класів.

У мові С# в класі-нащадку можна перевизначити (приховати)

успадкований член базового класу (змінну, метод). Тоді в об'єктів батьківського і похідного класів використовуватимуться різні вер­сії членів. Щоб запобігти помилковому перевизначенню, компіля­тор видає попередження. Щоб компілятор не реагував на такий

код, у класі-спадкоємцеві використовується зарезервоване позна­чення new.

Разом з цим, є можливість у методах класу-спадкоємця зверну­тися до прихованого члена.

Об'єкти класів ієрархії спадковості можна неявно приводити до типу базового класу. Але тоді для цього об'єкта будуть доступні

члени тільки цього базового класу.

Об'єкти класів ієрархії спадковості можна явно приводити до типу успадкованого класу. Проте слід мати на увазі, що у отрима­ного об'єкта коректно ініціалізовані лише члени базового класу.

Множинна спадковість - це така спадковість, коли похідний клас успадковує одночасно властивості і поведінку двох і більше класів

Опис і виклик конструкторів при множинній спадковості здійс­нюються так само як і при одиночному. Виклик деструкторів здій­снюється в такому ж порядку, як і при одиночній спадковості, тоб­то в зворотному викликам конструкторів.

Так само, як і при одиничній спадковості конструктору базово­го класу повинні передаватися фактичні параметри опису, які вста­новлюються в похідному класі. Розглянемо приклад множинної спадковості.

Множинної спадковості слід уникати шляхом ретельнішог

проектування класифікації.