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