
1. Одинична спадковість
Порядок виконання конструкторів визначається таким чином: спочатку викликаються вгору (за ієрархією) всі конструктори базових класів; в кінці викликаються конструктори похідних класів.
Деструктори в похідному класі викликаються у порядку, зворотному викликам конструкторів.
Класи-спадкоємці, окрім своїх власних членів, включають відкриті і захищені члени батьківського класу, його закриті члени при цьому не успадковуються. Захищені члени можна використовувати тільки методам класу-спадкоємця. Цей базовий клас і класи-спадкоємці можна використовувати для створення об'єктів.
Створюючи об'єкт-спадкоємець, викликаємо його конструктор і конструктор базового класу. Якщо базовий клас не має конструктора за умовчанням, слід викликати конструктор з параметрами* використовуючи ключове слово base в оголошенні конструктора
похідного класу.
Можна створити багаторівневу ієрархію спадковості. При цьому перераховані в описі класу-спадкоємця базові класи успадковуються безпосередньо, останні успадковуються побічно. У конструкторі спадкоємця можна викликати тільки конструктор класу, успадкованого прямо.
Порядок виконання конструкторів визначається таким чином: спочатку викликаються вгору за ієрархією всі конструктори базових класів; в кінці викликаються конструктори похідних класів.
У мові С# в класі-нащадку можна перевизначити (приховати)
успадкований член базового класу (змінну, метод). Тоді в об'єктів батьківського і похідного класів використовуватимуться різні версії членів. Щоб запобігти помилковому перевизначенню, компілятор видає попередження. Щоб компілятор не реагував на такий
код, у класі-спадкоємцеві використовується зарезервоване позначення new.
Разом з цим, є можливість у методах класу-спадкоємця звернутися до прихованого члена.
Об'єкти класів ієрархії спадковості можна неявно приводити до типу базового класу. Але тоді для цього об'єкта будуть доступні
члени тільки цього базового класу.
Об'єкти класів ієрархії спадковості можна явно приводити до типу успадкованого класу. Проте слід мати на увазі, що у отриманого об'єкта коректно ініціалізовані лише члени базового класу.
Множинна спадковість - це така спадковість, коли похідний клас успадковує одночасно властивості і поведінку двох і більше класів
Опис і виклик конструкторів при множинній спадковості здійснюються так само як і при одиночному. Виклик деструкторів здійснюється в такому ж порядку, як і при одиночній спадковості, тобто в зворотному викликам конструкторів.
Так само, як і при одиничній спадковості конструктору базового класу повинні передаватися фактичні параметри опису, які встановлюються в похідному класі. Розглянемо приклад множинної спадковості.
Множинної спадковості слід уникати шляхом ретельнішог
проектування класифікації.