Sobes.tech
Junior — Middle

Zašto je u Kotlinu zabranjeno nasleđivanje od data class?

sobes.tech АИ

Одговор од АИ

U Kotlinu, nasleđivanje od data class je zabranjeno jer data class automatski generiše metode poput equals(), hashCode(), toString(), kao i copy() i komponente za destrukturisanje. Dozvoljavanje nasleđivanja može dovesti do nejasnoća i grešaka u ponašanju ovih metoda, jer podklasa može promeniti stanje ili logiku, narušavajući ugovor postavljen u data class.

Stoga, zabrana nasleđivanja obezbeđuje integritet i predvidivost ponašanja data class.

Primer:

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

// class AdminUser(name: String, age: Int, val adminLevel: Int) : User(name, age) // Greška pri kompilaciji