Junior — Middle
Είναι δυνατόν να δηλώσετε κληρονόμο σε μια data class στο Kotlin;
sobes.tech AI
Απάντηση από AI
Στην Kotlin, μια data class από προεπιλογή δεν μπορεί να κληρονομηθεί, καθώς δηλώνεται αυτόματα ως τελική (final). Αυτό γίνεται για να διασφαλιστεί η σωστή λειτουργία των γεννημένων μεθόδων, όπως οι equals(), hashCode() και copy().
Αν προσπαθήσετε να δηλώσετε μια κλάση που κληρονομεί από μια data class, ο μεταγλωττιστής θα εμφανίσει σφάλμα.
Ωστόσο, αν είναι απολύτως απαραίτητο, μπορείτε να κάνετε μια data class ανοιχτή προσθέτοντας τον τροποποιητή open, αλλά αυτό δεν συνιστάται και δεν υποστηρίζεται άμεσα, καθώς μια data class δεν μπορεί να είναι open.
Παράδειγμα που δεν θα μεταγλωττιστεί:
data class User(val name: String)
class AdminUser(val adminLevel: Int) : User("Admin") // Σφάλμα
Επομένως, η κληρονομικότητα από data class στην Kotlin είναι αδύνατη.