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:
whenifadelerinin tam olmasını sağlar,elsegerekmez. - 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.