Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от AI

В Kotlin по подразбиране data клас не може да бъде наследен, тъй като те автоматично се обявяват като финални. Това е направено, за да се гарантира правилната работа на генерираните методи като 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 е невъзможно.