Kotlin “Sealed” Sınıfı (Örneklerle)

Zehra Yılmaz
Huawei Developers - Türkiye
2 min readJun 3, 2021

Selamlar. Bu yazıda size Kotlin sealed sınıftan bahsedeceğim, ardından Enum ile arasındaki benzerlik ve farklılıkları göstereceğim.Kotlin sealed kelimesi ilk olarak versiyon 1.4.3’te çıktı ve 1.5 sürümü ile geliştirmeye devam edildi.

İlk olarak “sealed” kelimesi ile başlayalım, sealed kelimesi sınırlandırılmış, mühürlenmiş anlamına gelir ve tıpkı anlamı gibi bize sınırlandırılmış bir hiyerarşi oluşturmak için yardımcı olur. Daha detaylı bir açıklama yapacak olursak, yalnızca sealed sınıf ile aynı pakette bulunan diğer sınıflar sealed sınıftan türetilebilir. Bu, aşağıdaki cümleyi açıklar çünkü modüller önce kendi içinde derlenir:

Mühürlü bir sınıfın tüm alt sınıfları derleme zamanında bilinir.

Sealed sınıfların bir diğer avantajını ise when operatorünü ifade hesaplamak için kullanırken (aşağıdaki örnekte gösteriliyor) görürüz, else durumunu yazmaya gerek yoktur çünkü var olan her sınıf bilinir ve böylece tüm durumlar zaten yazılmış demektir.

Örneği inceleyelim:

Room isminde bir sealed sınıfımız olsun ve bu sınıftan türetilmiş üç sınıfımız olsun.(LivingRoom, Bathroom ve Kitchen)

when anahtar kelimesini şöyle kullanacağız;

Veee ta-daa! Gördüğünüz gibi “Bir else durumu eklemelisiniz” şeklinde bir hata almıyoruz , çünkü daha önce de bahsettiğim gibi, tüm durumlar biliniyor.

Tanıdık geldi mi?

Enum vs Sealed

Enum’ların temel sabit veri kümeleri olduğunu ve aynı zamanda, sealed sınıflar gibi, sınırlı bir değer kümesine sahip olduğunu biliyoruz.

Fakat aralarında şöyle keskin bir ayrım var, Enum’lar tek bir nesne üzerinden yönetiliyor. Bunu şöyle açıklayabiliriz;

RoomType isminde bir Enum sınıfımız olsun:

Room nesnelerinden oluşan bir dizi oluşturmak istediğimizde:

Fakat RoomType’lardan oluşan bir dizi oluşturmak istediğimzde:

Gördüğünüz gibi Room dizisini oluşturmak isteyince, her farklı Room için bir nesne oluşturduk fakat RoomType dizisini oluştururken tek bir nesne üstünden değerlere ulaştık.

Evet, genel olarak sealed sınıfının kullanımını ve Enum ile kıyaslamasını yaptık.

Referanslar

--

--

Huawei Developers - Türkiye
Huawei Developers - Türkiye

Published in Huawei Developers - Türkiye

HUAWEI Geliştiricileri olarak, Huawei ekosistemi ve güncel teknolojilerin kullanımı hakkında bilgi paylaştığımız Medium kanalımız

Zehra Yılmaz
Zehra Yılmaz

No responses yet