Наследование в Kotlin основано на принципе открытых классов. По умолчанию все классы закрыты (final), и чтобы сделать класс наследуемым, его нужно явно пометить ключевым словом open.
Основные моменты:
- Открытые классы: Класс-родитель должен быть помечен как
open.
kotlin
- Наследование: Наследование осуществляется с помощью двоеточия (
:), за которым следует имя родительского класса и, при необходимости, вызов его конструктора.
kotlin
- Переопределение методов и свойств: Для переопределения методов или свойств родительского класса, они должны быть помечены в родительском классе как
open, а в дочернем классе использовано ключевое слово override.
kotlin
Если родительский метод или свойство не были помечены как open, их переопределить нельзя.
- Доступ к членам родительского класса: Доступ к членам родительского класса из дочернего осуществляется с помощью ключевого слова
super.
kotlin
- Конструкторы: Если у родительского класса есть конструктор с параметрами, дочерний класс должен вызвать этот конструктор в своей сигнатуре.
kotlin
- Интерфейсы: Класс может реализовывать несколько интерфейсов, и их можно указывать через запятую после наследуемого класса (если он есть). Интерфейсы по умолчанию "открыты" для реализации.
kotlin
- Абстрактные классы: Абстрактные классы используются для определения частичной реализации и содержат абстрактные методы и свойства (помеченные
abstract), которые должны быть реализованы в дочерних классах. Абстрактные члены не требуют open. Абстрактный класс также не требует open для наследования.
kotlin
В целом, Kotlin стремится к явности, требуя использования open для разрешения наследования и переопределения.