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