Українська
Підсумки
Висновки
Абстрактні класи та інтерфейси виражають абстракцію: що повинні вміти типи, не визначаючи реалізацію. Абстрактний клас не можна створити; він містить абстрактні члени, які реалізують похідні класи, а також спільний код, стан і конструктори, що робить його основою шаблонного методу. Інтерфейс – контракт без стану: клас може реалізувати кілька інтерфейсів, члени з однаковою сигнатурою реалізують явно, а члени за замовчуванням і статичні абстрактні члени розширюють можливості інтерфейсів. Стандартні інтерфейси .NET інтегрують власні класи з бібліотекою: IComparable<T> і IComparer<T> для сортування, IEquatable<T> для рівності, IDisposable з using для звільнення ресурсів. Програмування на рівні інтерфейсів забезпечує слабке зв’язування та заміну реалізацій.
Питання для самоперевірки
- Що таке абстракція в ООП?
- Що таке абстрактний клас? Чим абстрактний метод відрізняється від віртуального?
- Чи може абстрактний клас мати конструктор і поля?
- Що таке шаблонний метод? Наведіть приклад.
- Що таке інтерфейс? Які члени він може містити?
- Як реалізувати кілька інтерфейсів в одному класі?
- Як перевірити, чи реалізує об’єкт інтерфейс?
- Що таке явна реалізація інтерфейсу? Коли вона потрібна?
- Що таке члени інтерфейсу за замовчуванням?
- Для чого призначені статичні абстрактні члени інтерфейсів?
- Чим відрізняються
IComparable<T>іIComparer<T>? - Для чого призначений
IDisposable? Як працює операторusing? - Чим абстрактний клас відрізняється від інтерфейсу? Коли що обирати?
- Що означає програмування на рівні інтерфейсів?
- Як позначають абстрактні класи й реалізацію інтерфейсів на UML-діаграмах?
Корисні посилання
- Ключове слово
abstract: https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/abstract - Інтерфейси: https://learn.microsoft.com/dotnet/csharp/fundamentals/types/interfaces
- Явна реалізація інтерфейсу: https://learn.microsoft.com/dotnet/csharp/programming-guide/interfaces/explicit-interface-implementation
IComparable<T>: https://learn.microsoft.com/dotnet/api/system.icomparable-1- Реалізація
Dispose: https://learn.microsoft.com/dotnet/standard/garbage-collection/implementing-dispose