Українська
Підсумки
Висновки
Наслідування створює похідний клас на основі базового й моделює відношення «є». Похідний клас отримує члени базового, protected-члени доступні лише нащадкам, а конструктори не наслідуються й викликаються ланцюжком через base(…) від базового до похідного. Віртуальні методи, перевизначені модифікатором override, забезпечують поліморфізм: виклик визначається фактичним типом об’єкта, тому один код працює з різними похідними класами. Приховування new обирає метод за типом змінної й використовується рідко. Усі класи походять від object і можуть перевизначати ToString, Equals та GetHashCode. Для перевірки типу використовують is, as і шаблони, sealed забороняє наслідування, власні винятки успадковують Exception, а якщо відношення «є» відсутнє, замість наслідування використовують композицію.
Питання для самоперевірки
- Що таке наслідування? Як оголосити похідний клас?
- Які члени базового класу доступні в похідному? Для чого модифікатор
protected? - У якому порядку виконуються конструктори? Для чого
base(…)? - Чим відрізняються модифікатори
virtual,overrideіnew? - Що таке поліморфізм і пізнє зв’язування?
- Яку роль відіграє таблиця віртуальних методів?
- Які методи має клас
object? Які з них віртуальні? - Які правила потрібно дотримуватися під час перевизначення
EqualsіGetHashCode? - Чим відрізняються приведення вгору та вниз?
- Чим відрізняються операції
isіas? Що таке шаблон типу? - Коли краще використовувати віртуальні методи, а коли
switchза типами? - Для чого модифікатор
sealed? - Як створити власний клас винятку?
- Чим композиція відрізняється від наслідування? Що таке проблема крихкого базового класу?
- Як позначають узагальнення, асоціацію, агрегацію та композицію на UML-діаграмах?
Корисні посилання
- Наслідування: https://learn.microsoft.com/dotnet/csharp/fundamentals/object-oriented/inheritance
- Поліморфізм: https://learn.microsoft.com/dotnet/csharp/fundamentals/object-oriented/polymorphism
overrideіnew: https://learn.microsoft.com/dotnet/csharp/programming-guide/classes-and-structs/knowing-when-to-use-override-and-new-keywordssealed: https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/sealed- Власні винятки: https://learn.microsoft.com/dotnet/standard/exceptions/how-to-create-user-defined-exceptions
- Клас
Object: https://learn.microsoft.com/dotnet/api/system.object