Junior — Middle
Proč je v Kotlinu zakázáno dědit od data class?
sobes.tech AI
Odpověď od AI
V Kotlinu je dědičnost od data class zakázána, protože data class automaticky generuje metody jako equals(), hashCode(), toString(), stejně jako copy() a komponenty pro destrukturalizaci. Povolení dědičnosti by mohlo vést k nejasnostem a chybám v chování těchto metod, protože podtřída může změnit stav nebo logiku, čímž porušuje smlouvu stanovenou v data class.
Proto zákaz dědičnosti zajišťuje integritu a předvídatelnost chování data class.
Příklad:
data class User(val name: String, val age: Int)
// class AdminUser(name: String, age: Int, val adminLevel: Int) : User(name, age) // Chyba kompilace