Junior — Middle
Czy można zadeklarować dziedzica w data class w Kotlin?
sobes.tech AI
Odpowiedź od AI
W Kotlinie, data class domyślnie nie może być dziedziczona, ponieważ są automatycznie oznaczane jako finalne. Zostało to zrobione, aby zapewnić poprawne działanie generowanych metod, takich jak equals(), hashCode() i copy().
Jeśli spróbujesz zadeklarować klasę dziedziczącą po data class, kompilator zgłosi błąd.
Jednak, jeśli jest to naprawdę konieczne, można uczynić data class otwartą, dodając modyfikator open, ale nie jest to zalecane i nie jest bezpośrednio obsługiwane, ponieważ data class nie może być open.
Przykład, który nie skompiluje się:
data class User(val name: String)
class AdminUser(val adminLevel: Int) : User("Admin") // Błąd
W związku z tym, dziedziczenie po data class w Kotlinie jest niemożliwe.