Sobes.tech
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.