Какие есть ограничения в Data class

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

Ответ

Data class в Kotlin имеет несколько ограничений:

  1. Не может быть abstract, open, sealed или inner
  2. Не может наследоваться от других классов (кроме интерфейсов)
  3. Все параметры в первичном конструкторе должны быть объявлены как val или var
  4. Не может быть унаследован другими классами (по умолчанию final)

Пример с ограничением наследования:

open class Parent
data class Child(val name: String) : Parent() // Ошибка: Data class can't extend other classes

Для обхода ограничений часто используют композицию вместо наследования. Data классы предназначены в первую очередь для хранения данных и автоматической генерации equals(), hashCode(), toString() и методов копирования.