Sobes.tech
Junior — Middle

Dlaczego w Kotlinie zabronione jest dziedziczenie po data class?

sobes.tech AI

Odpowiedź od AI

W Kotlinie dziedziczenie po data class jest zabronione, ponieważ data class automatycznie generuje metody takie jak equals(), hashCode(), toString(), a także copy() i komponenty do destrukturyzacji. Zezwolenie na dziedziczenie mogłoby prowadzić do niejednoznaczności i błędów w zachowaniu tych metod, ponieważ podklasa może zmienić stan lub logikę, naruszając kontrakt ustalony w data class.

W związku z tym zakaz dziedziczenia zapewnia integralność i przewidywalność zachowania data class.

Przykład:

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

// class AdminUser(name: String, age: Int, val adminLevel: Int) : User(name, age) // Błąd kompilacji