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.