В чем разница в наследовании в Java и Kotlin

«В чем разница в наследовании в Java и Kotlin» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В 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