Sobes.tech
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.