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