Sobes.tech
Junior — Middle

Може ли да се одреди наслеђивање између класе података и друге класе?

sobes.tech АИ

Одговор од АИ

U Kotlinu, data class može nasleđivati drugu klasu ako ta klasa nije final (tj. otvorena za nasleđivanje). Međutim, data class automatski nasleđuje od Any i mora imati bar jedan parametar u konstruktoru.

Važno:

  • Data class ne može biti open ili abstract.
  • Nasleđivanje od data class je moguće, ali sama data class ne može biti roditeljska klasa (tj. ne može se nasleđivati od data class).

Primer:

open class Person(val name: String)

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

Tako je moguće nasleđivanje između data class i druge klase, ali sa ograničenjima, i češće se koristi kompozicija (ugrađivanje objekata) umesto nasleđivanja za data class-ove.