Εξηγήστε τι είναι οι κλειστές κλάσεις στο Kotlin και πώς χρησιμοποιούνται
sobes.tech AI
Απάντηση από AI
Στην Kotlin, δεν υπάρχει συγκεκριμένη έννοια των "κλειστών κλάσεων" (closed classes) ως ξεχωριστού τύπου, αλλά υπάρχει μια παρόμοια ιδέα: οι sealed classes (σφραγισμένες κλάσεις).
Μια sealed class περιορίζει την ιεραρχία κληρονόμησης: όλες οι υποκλάσεις αυτής της κλάσης πρέπει να δηλώνονται στο ίδιο αρχείο. Αυτό επιτρέπει στον μεταγλωττιστή να γνωρίζει όλες τις πιθανές υποκλάσεις και να τις χρησιμοποιεί, για παράδειγμα, σε εκφράσεις when χωρίς την ανάγκη να γράψει μια διακλάδωση else.
Η χρήση των sealed classes είναι βολική για το μοντελοποίηση περιορισμένου συνόλου επιλογών, όπως καταστάσεις ή γεγονότα.
Παράδειγμα:
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val error: Throwable) : Result()
}
fun handleResult(result: Result) {
when(result) {
is Result.Success -> println("Δεδομένα: ${result.data}")
is Result.Error -> println("Σφάλμα: ${result.error.message}")
}
}
Αν με "κλειστές κλάσεις" εννοούνται κλάσεις με τον τροποποιητή private ή internal, τότε αυτές είναι κλάσεις με περιορισμένο πεδίο ορατότητας: private — ορατές μόνο μέσα στο αρχείο, internal — μέσα στο module.