Можно ли использовать модификатор abstract с data class

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

Ответ

Нет, модификаторы abstract и data несовместимы в Kotlin. Data классы предназначены для хранения данных и автоматической генерации equals(), hashCode(), toString() и других методов. Они должны быть финализированными (не могут быть abstract или open), так как их поведение зависит от всех свойств, объявленных в первичном конструкторе.

Пример:

// Ошибка: Modifier 'abstract' is incompatible with 'data'
abstract data class User(val name: String)

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