Junior — Middle
Μπορεί να προσδιοριστεί η κληρονομικότητα μεταξύ μιας κλάσης δεδομένων και μιας άλλης κλάσης;
sobes.tech AI
Απάντηση από AI
Στην Kotlin, μια data class μπορεί να κληρονομήσει από άλλη κλάση εάν αυτή δεν είναι final (δηλαδή, ανοιχτή για κληρονομιά). Ωστόσο, η data class κληρονομεί αυτόματα από το Any και πρέπει να έχει τουλάχιστον μια παράμετρο στον κατασκευαστή.
Σημαντικό:
- Η
data classδεν μπορεί να είναιopenήabstract. - Η κληρονομιά από μια
data classείναι δυνατή, αλλά η ίδια ηdata classδεν μπορεί να είναι η γονική κλάση (δηλαδή, δεν μπορεί να κληρονομηθεί από μιαdata class).
Παράδειγμα:
open class Person(val name: String)
data class Employee(val id: Int, val person: Person) : Person(person.name)
Έτσι, η κληρονομιά μεταξύ μιας data class και άλλης κλάσης είναι δυνατή, αλλά με περιορισμούς, και συχνά προτιμάται η σύνθεση (ενσωμάτωση αντικειμένων) αντί της κληρονομιάς για τις data class.