Sobes.tech
Junior — Middle

Da li je moguće deklarisati naslednika u data class u Kotlinu?

sobes.tech АИ

Одговор од АИ

В 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 невозможно.