Sobes.tech
Junior — Middle

Je možné vytvárať podtriedy u data class v Kotlin?

sobes.tech AI

Odpoveď od AI

V Kotlinu sú data class predvolene final, čo znamená, že ich nie je možné dediť. Toto bolo urobené na zachovanie sémantiky a správneho fungovania automaticky generovaných metód, ako sú equals(), hashCode() a copy().

Ak sa pokúsite vytvoriť podtriedu data class, kompilátor vypíše chybu. Ak je to však naozaj potrebné, môžete triedu označiť ako open, ale v takom prípade nemôže byť data class.

Príklad, ktorý sa nebude kompilovať:

data class User(val name: String)

class SpecialUser(val id: Int) : User("default") // Chyba: nemožno dediť od data class

Preto nie je možné vytvárať podtriedy data class.