Sobes.tech
Junior — Middle

Ποιος είναι ο σκοπός μιας κλάσης που δηλώνεται με τον τροποποιητή sealed;

sobes.tech AI

Απάντηση από AI

Μια κλάση που δηλώνεται με τον τροποποιητή sealed προορίζεται να περιορίσει την κληρονομικότητα. Μια τέτοια κλάση μπορεί να έχει υποκλάσεις, αλλά μόνο αυτές που δηλώνονται στο ίδιο αρχείο. Αυτό επιτρέπει τον έλεγχο και τον καθορισμό της ιεραρχίας κληρονομικότητας, καθιστώντας την πιο προβλέψιμη και ασφαλή.

Για παράδειγμα, στα Kotlin, οι κλάσεις sealed χρησιμοποιούνται συχνά για την αναπαράσταση περιορισμένου συνόλου καταστάσεων ή παραλλαγών, κάτι που είναι βολικό κατά την εργασία με εκφράσεις when, όπου ο μεταγλωττιστής μπορεί να ελέγξει την πληρότητα της επεξεργασίας όλων των παραλλαγών.

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}")
    }
}