Junior — Middle
Je možné deklarovať dediča v data class v Kotlin?
sobes.tech AI
Odpoveď od AI
V Kotlinu nie je možné dedičstvo dátovej triedy podľa predvoleného nastavenia, pretože sú automaticky vyhlásené za finálne. To je urobené na zabezpečenie správneho fungovania generovaných metód, ako sú equals(), hashCode() a copy().
Ak sa pokúsite deklarovať triedu, ktorá dedí od dátovej triedy, kompilátor vypíše chybu.
Avšak, ak je to naozaj potrebné, môžete urobiť dátovú triedu otvorenou pridaním modifikátora open, ale to sa neodporúča a nie je to priamo podporované, pretože dátová trieda nemôže byť open.
Príklad, ktorý sa nezkompiluje:
data class User(val name: String)
class AdminUser(val adminLevel: Int) : User("Admin") // Chyba
Preto je dedenie od dátovej triedy v Kotlinu nemožné.