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