Sobes.tech
Junior — Middle

Perché in Kotlin è vietata l'ereditarietà da data class?

sobes.tech AI

Risposta dell'AI

In Kotlin, l'ereditarietà di data class è vietata perché data class genera automaticamente metodi come equals(), hashCode(), toString(), così come copy() e componenti per la destrutturazione. Permettere l'ereditarietà potrebbe portare a ambiguità e errori nel comportamento di questi metodi, poiché una sottoclasse può modificare lo stato o la logica, violando il contratto stabilito in data class.

Pertanto, il divieto di ereditarietà garantisce l'integrità e la prevedibilità del comportamento di data class.

Esempio:

data class User(val name: String, val age: Int)

// class AdminUser(name: String, age: Int, val adminLevel: Int) : User(name, age) // Errore di compilazione