Ответ
Data class в Kotlin имеет несколько ограничений:
- Не может быть
abstract,open,sealedилиinner - Не может наследоваться от других классов (кроме интерфейсов)
- Все параметры в первичном конструкторе должны быть объявлены как
valилиvar - Не может быть унаследован другими классами (по умолчанию
final)
Пример с ограничением наследования:
open class Parent
data class Child(val name: String) : Parent() // Ошибка: Data class can't extend other classes
Для обхода ограничений часто используют композицию вместо наследования. Data классы предназначены в первую очередь для хранения данных и автоматической генерации equals(), hashCode(), toString() и методов копирования.