Junior — Middle
Σε ποιες περιπτώσεις και σε ποιο μέρος μπορεί να δηλωθούν υποκλάσεις αν η κλάση είναι σημειωμένη ως sealed;
sobes.tech AI
Απάντηση από AI
Στην Kotlin, μια κλάση που σημειώνεται ως sealed περιορίζει την ιεραρχία κληρονόμησης: όλες οι υποκλάσεις αυτής της κλάσης πρέπει να δηλωθούν στο ίδιο αρχείο με την ίδια την κλάση sealed. Αυτό επιτρέπει στον μεταγλωττιστή να γνωρίζει το πλήρες σύνολο των κληρονόμων και να το χρησιμοποιεί, για παράδειγμα, σε εκφράσεις when χωρίς την ανάγκη να γράψει ένα μπλοκ else.
Δηλαδή, οι υποκλάσεις μιας sealed κλάσης μπορούν να δηλωθούν:
- Στο ίδιο αρχείο όπου δηλώνεται η
sealedκλάση. - Μέσα στην ίδια την
sealedκλάση (ενδογενείς κλάσεις).
Παράδειγμα:
sealed class Result {
class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()
}
Ή
sealed class Result
class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()
Αλλά όλες αυτές οι υποκλάσεις πρέπει να βρίσκονται στο ίδιο αρχείο με την sealed κλάση. Αυτός ο περιορισμός βοηθά στην εξασφάλιση της ασφάλειας τύπων και της πληρότητας των ελέγχων.