Junior — Middle
Lze vytvářet podtřídy u data class v Kotlinu?
sobes.tech AI
Odpověď od AI
V Kotlinu jsou data class ve výchozím nastavení final, což znamená, že je nelze dědit. To je provedeno za účelem zachování sémantiky a správného fungování automaticky generovaných metod, jako jsou equals(), hashCode() a copy().
Pokud se pokusíte vytvořit podtřídu data class, kompilátor vypíše chybu. Pokud je to však opravdu nutné, můžete třídu označit jako open, ale pak nemůže být data class.
Příklad, který se nesestaví:
data class User(val name: String)
class SpecialUser(val id: Int) : User("default") // Chyba: nelze dědit od data class
Tedy není možné vytvářet podtřídy data class.