CodeBlanks Logo Icon CodeBlanks

sealed class

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

Main.kt
// Status sealed class tanımı
// object Loading ve object Done alt tipleri
// main'de Status tipinde değişken, yazdır

Örnek çözüm

Main.kt
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

Soru
sealed ____ Status
object Loading : Status()
object Done : Status()
Cevap
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

Orta seviye bölümündeki tüm dersler