Sobes.tech
Junior — Middle

Εξηγήστε τι είναι οι κλειστές κλάσεις στο 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.