0Pricing
Kotlin Academy · Ders

sealed class ve sealed interface: Hangisi Ne Zaman Kullanılır

Kotlin'de sealed sınıflar ile arayüzler arasındaki farkı anlayın.

sealed class ve sealed interface: Hangisi Ne Zaman Kullanılır, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.

Kotlin'de Mühürlü Türler

Mühürlü sınıflar ve arayüzler, sınıf hiyerarşisini bilinen bir alt tür kümesiyle sınırlar ve tüm olasılıkları kapsayan when ifadelerini mümkün kılar.

mühürlü sınıf Temelleri

Mühürlü sınıf, alt sınıflandırmayı aynı paketle (Kotlin 1.5 ve sonrası) veya aynı dosyayla sınırlar.
sealed class Shape
class Circle(val radius: Double) : Shape()
class Rectangle(val w: Double, val h: Double) : Shape()
object Unknown : Shape()

mühürlü arayüz: Daha Esnek

mühürlü arayüz, alt türlerin aynı anda başka sınıfları genişletmesine VE diğer arayüzleri uygulamasına olanak tanır — mühürlü sınıf bunu yapamaz.
sealed interface Result<out T>
data class Success<T>(val value: T) : Result<T>
data class Error(val ex: Exception) : Result<Nothing>

Temel Farklar

mühürlü sınıf: Alt sınıfların kurucuları ve durumu olabilir. mühürlü arayüz: Alt türler herhangi bir sınıfı genişletebilir. Daha fazla esnekliğe ihtiyaç duyduğunuzda mühürlü arayüz kullanın.
// sealed class subtype extends another class:
sealed interface Command
class MoveCommand(val dx: Int, val dy: Int) : Command, Serializable
class ResizeCommand(val scale: Double) : Command, Cloneable

Tüm Olasılıkları Kapsayan when: else Gerekmez

Tüm mühürlü alt türler ele alındığında when ifadesi tüm olasılıkları kapsar — else gerekmez ve derleyici eksiksizliği zorunlu kılar.
fun area(shape: Shape): Double = when (shape) {
    is Circle -> Math.PI * shape.radius * shape.radius
    is Rectangle -> shape.w * shape.h
}  // no 'else' — compiler guarantees completeness

Alt Tür Eklemek Mevcut when İfadelerini Bozar

Yeni bir mühürlü alt tür eklediğinizde, mevcut when ifadeleri güncellenene kadar derlenemez. Ana fayda budur.
// Add Triangle to Shape:
class Triangle(val base: Double, val height: Double) : Shape()
// Now the area() function above won't compile until
// a Triangle branch is added — safety net!

Ortak Özelliklere Sahip Mühürlü Sınıflar

Paylaşılan özellikleri mühürlü sınıfta tanımlayın.
sealed class NetworkResult {
    abstract val timestamp: Long
}
data class SuccessResult(val data: String, override val timestamp: Long) : NetworkResult()
data class FailureResult(val error: String, override val timestamp: Long) : NetworkResult()

İç İçe Mühürlü Türler

Mühürlü alt türlerin kendileri de çok düzeyli hiyerarşiler için mühürlü olabilir.
sealed interface UiState
object Loading : UiState
sealed interface Loaded : UiState
data class Content(val items: List<String>) : Loaded
data class Empty(val hint: String) : Loaded
data class Failure(val error: String) : UiState

Durumsuz Varyantlar için object Alt Türleri

Durum taşımayan mühürlü alt türler için object kullanın.
sealed class Direction
object North : Direction()
object South : Direction()
object East : Direction()
object West : Direction()

fun move(d: Direction) = when (d) {
    North -> y++
    South -> y--
    East -> x++
    West -> x--
}

Mühürlü Türle Birlikte sealed + data class + object

Mühürlü bir tür altında data class'ı (durum taşıyan alt türler için) ve object'i (tekil nesneler için) birlikte kullanın.
sealed class LoadState
object Idle : LoadState()
object Loading : LoadState()
data class Success(val count: Int) : LoadState()
data class Error(val msg: String) : LoadState()

mühürlü sınıf ile arayüz Arasında Seçim Yapma

Şu durumda mühürlü sınıf kullanın: tüm alt türler ortak durumu paylaşır. Şu durumda mühürlü arayüz kullanın: alt türlerin farklı temel sınıfları genişletmesi veya başka arayüzleri uygulaması gerekir.

Kısa Kontrol

Mühürlü arayüzün mühürlü sınıfa göre avantajı nedir?

Özet

mühürlü sınıf/arayüz, hiyerarşiyi bilinen türlerle sınırlar. Mühürlü türler üzerindeki when tüm olasılıkları kapsar — else gerekmez. mühürlü arayüz, alt türlerin başka sınıfları genişletmesine olanak tanır. Durum taşıyan alt türler için data class, durumsuz alt türler için object kullanın.

Sıkça Sorulan Sorular

“sealed class ve sealed interface: Hangisi Ne Zaman Kullanılır” dersi ücretsiz mi?

Evet — “sealed class ve sealed interface: Hangisi Ne Zaman Kullanılır” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.

“sealed class ve sealed interface: Hangisi Ne Zaman Kullanılır” dersinde ne öğreneceğim?

Kotlin'de sealed sınıflar ile arayüzler arasındaki farkı anlayın. Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“sealed class ve sealed interface: Hangisi Ne Zaman Kullanılır” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. sealed class ve sealed interface: Hangisi Ne Zaman Kullanılır
  2. Sealed Hiyerarşilerle Eksiksiz when
  3. Sealed Sınıflarla Kullanıcı Arayüzü Durumlarını Modelleme
  4. Sealed Hiyerarşileri İç İçe Yerleştirme ve Birleştirme
← Kotlin Academy Sayfasına Dön