Sobes.tech
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 κλάση. Αυτός ο περιορισμός βοηθά στην εξασφάλιση της ασφάλειας τύπων και της πληρότητας των ελέγχων.