Junior — Middle
Waarom is er in Kotlin verboden om van data class te erven?
sobes.tech AI
Antwoord van AI
In Kotlin is erfenis van data class verboden omdat data class automatisch methoden zoals equals(), hashCode(), toString(), evenals copy() en destructuratiecomponenten genereert. Toestaan van erfenis kan leiden tot ambiguïteiten en fouten in het gedrag van deze methoden, omdat een subklasse de staat of logica kan wijzigen, wat het contract dat in data class is vastgelegd, schendt.
Daarom zorgt het verbod op erfenis voor de integriteit en voorspelbaarheid van het gedrag van data class.
Voorbeeld:
data class User(val name: String, val age: Int)
// class AdminUser(name: String, age: Int, val adminLevel: Int) : User(name, age) // Compileerfout