Українська
Підсумки
Висновки
Спільний тип дозволяє написати алгоритм один раз, а конкретні об’єкти надають потрібну поведінку. Абстрактний клас корисний для спільного стану та алгоритму, інтерфейс – для незалежної можливості. Наслідування потребує контракту підстановки, а композиція часто дає простіше розділення відповідальностей.
Питання для самоперевірки
- Навіщо Kotlin робить класи final за замовчуванням?
- Що визначає статичний тип, а що фактичний тип об’єкта?
- Чому super-виклик не вимикає всі поліморфні виклики?
- Які члени може мати абстрактний клас?
- Чому інтерфейс не зберігає власне поле властивості?
- Як розв’язати конфлікт двох стандартних реалізацій?
- Коли smart cast неможливий і чому допомагає локальний val?
- Як пов’язані equals і hashCode?
- Чому відкритий виклик у init базового класу небезпечний?
- Яку обіцянку порушує неправильний підтип?