Ответ
В Kotlin все классы по умолчанию final (не наследуемые), в отличие от Java, где классы по умолчанию открыты для наследования. Для наследования в Kotlin нужно явно пометить класс как open или abstract.
Пример:
open class Parent // можно наследовать
class Child : Parent() // наследование
В Java:
class Parent {} // можно наследовать без модификаторов
class Child extends Parent {} // наследование
Также в Kotlin:
- Переопределение методов требует
openу родителя иoverrideу наследника - Нет checked exceptions
- Поддержка делегирования через
by