Kotlin Sealed Class
Selamlar, bugün sizlerle Kotlin dilinde işimizi kolaylaştıran bir class olan Sealed’ı öğreneceğiz. Kahveleriniz ☕️ hazırsa haydi başlayalım. 🥳

Kotlin’in güçlü 💪 özelliklerinden biri olan Sealed Class, Java’da ise version 15 ile desteklenmeye başladı. Java’da ve Kotlin’de kullanılan Enum Class’ların üst seviye hale getirilmiş durumuna Sealed class olarak adlandırabiliriz.
- Sealed class abstract’tır. Nesnesi oluşturulmaz.
Abstract: Nesne Yönelimli Programlamanın demirbaşlarından biridir. Interface’lerin skillerine sahiptir. State tutabilme özelliğide öne çıkan özellikleri arasındadır.
- Sealed class’ın private constructor metodu bulunmaz.
Constructor: Class’tan üretilen objelerin değişkenlerinin değerlerini belirtmek için kullanılan special fonksiyonlardır.
- Sealed class ile Sub class aynı dosyada tanımlanması gerekir.
Kotlin’le alakalı detaylı bilgi için blog yazısını inceleyebilirsiniz. 👇🏻
Sealed Class ile ilgili örneğe geçmeden önce Enum Class’ların bize neden yeterli olmadığını öğrenmek için bir senaryo üzerinden gideceğiz. Akabinde aynı işlemi Sealed Class ile nasıl yaparız bunu inceleyeceğiz. 🔎

Enum: Genellikle sabit değerlerden oluşan yapılardır. Tanımlanan int, string tipteki değerler kolayca diğer classlar tarafından kullanılabilir.
🎬 Senaryo: Sunucu tarafından alınan verilerin durumlarını handle etmek.
2 şekilde Enum class tanımlayıp kullanabiliriz.
1️⃣ Constructor
kullanmadan direkt yalın halde parametresiz şekilde kullanılır.
2 ayrı function tanımlayıp kullanmamız gerekir. Bu durumda pek efektif değil.
2️⃣ Bu yolda ise Enum Class’a constructor tanımlayarak data tutmasını söylüyoruz.
Bela başımızı bırakmıyor bu seferde 🤓 veriler her koşulda bizlere gelmiyor. SUCCESS
durumu bize gelip, handle edebiliyoruz. ERROR
ve LOADING
koşullarında ise anlık durumları belirtiliyor. 2.adımda da her koşula ayrı parametre dönmemesi bizim elimizi kolumuzu bağlıyor.
Yani şimdi 2 farklı yolu denedik Enum Class
içinde istediğimizi elde edemedik. 😬

Ne yapmamız gerekir dediğimiz noktada bizim imdadımıza Sealed Class
yetişiyor. Ve sana nasıl yardımcı olurum edasıyla yaklaşıyor. 😇

Error
ve Loading
durumlarında veri alınmadığı için parametre tanımı yapılmadı. Singleton olarak tutmak içinde object
kullandık. Eğer veriler alacaksanız class
tipinde tanımlayıp kullanabilirsiniz. data class
tanımında constructor
parametresini ekleyerek datayı kolayca alabileceğiz.
Success
kısmında verilere kolayca erişip kullanabiliyoruz.
is
veya !is
operatörünü kullanarak, bloğun içinde argüman olarak iletilen değişkenin türünü kontrol edebiliriz.
Detaylı bilgi için inceleyebilirsiniz:
Bir yazımızın daha sonuna geldik teşekkür eder, herkese keyifli kodlamalar dilerim. 💻
