Junior — Middle
Czy można określić dziedziczenie między klasą danych a inną klasą?
sobes.tech AI
Odpowiedź od AI
W Kotlinie klasa danych (data class) może dziedziczyć po innej klasie, jeśli ta nie jest oznaczona jako final (czyli jest otwarta na dziedziczenie). Jednak klasa danych automatycznie dziedziczy od Any i musi mieć co najmniej jeden parametr w konstruktorze.
Ważne:
- Klasa danych nie może być
openaniabstract. - Dziedziczenie po klasie danych jest możliwe, ale sama klasa danych nie może być klasą nadrzędną (czyli nie można dziedziczyć z data class).
Przykład:
open class Person(val name: String)
data class Employee(val id: Int, val person: Person) : Person(person.name)
W ten sposób dziedziczenie między klasą danych a inną klasą jest możliwe, ale z ograniczeniami, i częściej stosuje się kompozycję (wstawianie obiektów) zamiast dziedziczenia dla klas danych.