Sobes.tech
Junior — Middle

Je možné určiť dedičstvo medzi triedou dát a inou triedou?

sobes.tech AI

Odpoveď od AI

V Kotlinu môže data class dediť od inej triedy, ak táto nie je final (t.j. otvorená na dedenie). Avšak, data class automaticky dedí od Any a musí mať aspoň jeden parameter v konštruktore.

Dôležité:

  • Data class nemôže byť open alebo abstract.
  • Dediť od data class je možné, ale samotná data class nemôže byť rodičovskou triedou (t.j. nemožno dediť od data class).

Príklad:

open class Person(val name: String)

data class Employee(val id: Int, val person: Person) : Person(person.name)

Takto je možné dediť medzi data class a inou triedou, ale s obmedzeniami, a častejšie sa používa kompozícia (vloženie objektov) namiesto dedenia pre data class-y.