sealed class
- Kotlin kursu
- Orta seviye
- Ders 24/116
- 5 dk
sealed class ile kapalı hiyerarşi öğrenirsin.
sealed class
Bir sealed class, alt tiplerinin sınırlı ve bilindiği bir kapalı hiyerarşi tanımlar. Tüm alt tipler aynı dosyada (veya Kotlin 2'de aynı modülde) bildirilmelidir.
Örnek: sealed class Status; object Loading : Status(); object Done : Status(). Status'ün yalnızca iki alt tipi vardır: Loading ve Done. Bu kapalılık, derleyicinin tüm alt tipleri bildiği anlamına gelir; when ifadeleri tam (exhaustive) olabilir. sealed class'lar abstract'tır; doğrudan örneklenemezler.
Alt tipler
Bir sealed class'ın alt tipleri class, data class veya object olabilir. Her biri sealed class'ı miras alır.
Örnek: sealed class Status; object Loading : Status(); data class Error(val msg: String) : Status(). Burada Loading bir object (tek örnek), Error bir data class (her hata için ayrı örnek). Bir alt tipi object yapmak, tek bir durumu ifade eder; data class yapmak, alan içeren bir durumu ifade eder. Sealed class'ın kendisi abstract'tır.
Uygulama Status sealed class'ını tanımla
Status adında bir sealed class tanımla. İki alt tip ekle: object Loading : Status() ve object Done : Status(). main içinde val s: Status = Done bildirimi yap ve s'yi println ile yazdır.
Başlangıç kodu
// Status sealed class tanımı
// object Loading ve object Done alt tipleri
// main'de Status tipinde değişken, yazdırÖrnek çözüm
sealed class Status
object Loading : Status()
object Done : Status()
fun main() {
val s: Status = Done
println(s)
}Beklenen çıktı
Done
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir <strong>sealed class</strong> aşağıdakilerden hangisini sağlar?
- Alt tiplerin bilindiği kapalı bir hiyerarşi Doğru cevap
- Sınıfın doğrudan örneklenbilmesi
- Alt sınıfların dosya dışında tanımlanabilmesi
- Çalışma zamanında yeni alt tip eklenebilmesi
Açıklama: sealed class alt tipleri bilinen kapalı bir hiyerarşi tanımlar.
2 sealed class tanımını tamamla
sealed ____ Status
object Loading : Status()
object Done : Status()
sealed class Status
object Loading : Status()
object Done : Status()
Açıklama: sealed class ile kapalı hiyerarşi tanımlanır.
3 Sealed class parçalarını eşle
| Kavram | Anlamı |
|---|---|
sealed class Status |
Kapalı üst sınıf |
object Loading |
Loading durumu |
object Done |
Done durumu |
: Status() |
Miras ve constructor |