Sobes.tech
Middle

Seal sınıflarıyla tanıyor musun ve özellikleri nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Evet, biliyorum.

sealed sınıfların özelliği, kalıtım hiyerarşisini sınırlamalarıdır. Bir sealed sınıfın tüm doğrudan alt türleri aynı dosyada tanımlanmalıdır. Bu, derleyicinin tüm olası alt türleri bilmesini sağlar ve when ifadelerinde tamlık kontrolü için faydalıdır.

Örnek:

sealed class Result {
    data class Success(val message: String) : Result()
    data class Error(val code: Int, val description: String) : Result()
    object Loading : Result() // Yükleme durumu için Singleton
}

fun processResult(result: Result) {
    when (result) {
        is Result.Success -> println("Başarılı: ${result.message}")
        is Result.Error -> println("Hata ${result.code}: ${result.description}")
        Result.Loading -> println("Yükleniyor...")
        // Else gerekmez, çünkü derleyici tüm olasılıkları bilir
    }
}

Avantajlar:

  • Güvenlik: when ifadelerinin tam olmasını sağlar, else gerekmez.
  • Okunabilirlik: Sınırlı olası durumlar veya alt türler kümesini açıkça gösterir.
  • Kontrol: Dışarıdan kontrolsüz kalıtımı engeller.

enum class ile farkı: sealed sınıflar her alt tür için farklı veri tipleri içerebilir (örneğin Success ve Error), oysa enum class öğeleri statiktir ve sadece belirli özelliklere sahip olabilir, bunlar tümüyle ortak olur. Ayrıca, sealed sınıflar Loading gibi nesne örnekleri de içerebilir.