Можно ли наследоваться от data class в Kotlin

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

Ответ

Да, можно, но с ограничениями.

  1. Data class не может быть унаследована от другого data class – это запрещено на уровне языка.
  2. Обычный класс может наследоваться от data class, но теряет автоматические методы (equals(), hashCode(), toString(), copy()).

Пример:

open data class Person(val name: String)  
class Employee(name: String, val id: Int) : Person(name)  

Здесь Employee – обычный класс, а Person – data class.

Рекомендация: если нужна иерархия, лучше использовать интерфейсы или абстрактные классы.