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