Kotlin'de data sınıfları ve sealed sınıflar hakkında bilgi ver.
sobes.tech yapay zeka
AI'dan gelen yanıt
Kotlin'deki veri sınıfları, verileri depolamak için kullanılır. Otomatik olarak equals(), hashCode(), toString(), copy() gibi kullanışlı metodlar ve destrüktürasyon için bileşenler üretirler.
// Veri sınıfı örneği
data class User(val name: String, val age: Int)
Seal sınıflar, sınırlı bir sınıf hiyerarşisini temsil etmek için kullanılır. Tüm alt sınıflar, aynı dosyada tanımlanmalıdır (Kotlin 1.5+ sürümünde bu kısıtlama gevşetilmiştir). Bu, derleyicinin when ifadesinde alt sınıfların tam bir listesini yapmasını sağlar.
// Seal sınıfı örneği
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val message: String) : Result()
object Loading : Result()
}
// Seal sınıfını `when` ifadesinde kullanma örneği
fun processResult(result: Result) {
when (result) {
is Result.Success -> println("Başarılı: ${result.data}")
is Result.Error -> println("Hata: ${result.message}")
Result.Loading -> println("Yükleniyor...")
}
}
Ana farklar:
- Amaç: veri sınıfları - veri depolama, seal sınıflar - sınıf hiyerarşisini sınırlama.
- Üretilen metodlar: veri sınıfları, standart veri metodları üretir; seal sınıflar - üretmez.
- Alt sınıf kısıtlaması: seal sınıflar, alt sınıf bildirimleri üzerinde kısıtlamalar getirir; veri sınıfları - getirmez.
whenifadesinde tam kapsamlılık: Kotlin derleyicisi, seal sınıfın alt sınıflarınıwheniçinde eksiksiz kontrol edebilir,elsebloğuna gerek kalmadan.
Hem seal hem de veri sınıfları soyut olabilir, ancak veri sınıfları open olamaz (varsayılan olarak final oldukları için) ve doğrudan open metodlar uygulayamazlar (sadece arayüzler veya soyut sınıflar aracılığıyla). Seal sınıflar varsayılan olarak soyuttur ve yapıcıları özel erişimlidir.