Sobes.tech
Back to questions
Junior — Middle
67

Возможно ли объявить наследника у data class в Kotlin?

Companies where asked
ПромсвязьбанкПромсвязьбанк

Answer from AI

sobes.tech AI

В Kotlin data class по умолчанию не может быть наследником, так как они автоматически объявляются как final. Это сделано для обеспечения корректной работы сгенерированных методов, таких как equals(), hashCode() и copy().

Если попытаться объявить класс, наследующий data class, компилятор выдаст ошибку.

Однако, если очень нужно, можно сделать data class открытым, добавив модификатор open, но это не рекомендуется и не поддерживается напрямую, так как data class не может быть open.

Пример, который не скомпилируется:

data class User(val name: String)

class AdminUser(val adminLevel: Int) : User("Admin") // Ошибка

Таким образом, наследование от data class в Kotlin невозможно.