Sobes.tech
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.