Polymorphism
- Kotlin kursu
- İleri seviye
- Ders 29/83
- 5 dk
Polymorphic serialization ile polimorfik serileştirme öğrenirsin.
Polymorphic serialization
Polymorphic serialization, bir sealed class ya da interface altındaki farklı alt sınıfların JSON'a çevrilmesidir. Her alt sınıf, tür etiketi ile yazılır.
Örnek: @Serializable sealed class Shape. Alt sınıflar @Serializable data class Circle(val radius: Double) : Shape() ve @Serializable data class Square(val side: Double) : Shape(). JSON'da {"type":"Circle","radius":5.0} biçiminde tür bilgisi taşır. Bu, bir listede farklı şekilleri aynı anda serileştirmek için kullanılır.
Sealed class ile polimorfizm
Bir sealed class, alt sınıflarının derleme zamanında bilindiği bir sınıftır. Polimorfik serileştirme için idealdir.
Örnek: @Serializable sealed class Message. Alt sınıflar: @Serializable data class TextMessage(val text: String) : Message() ve @Serializable data class ImageMessage(val url: String) : Message(). Bir List<Message> hem metin hem görsel mesajları taşır. JSON'da her öğe type alanıyla hangi alt sınıfa ait olduğunu bildirir. Bu, mesajlaşma uygulamalarında kullanışlıdır.
Uygulama Sealed class Shape tanımla
@Serializable sealed class Shape tanımla. Alt sınıf olarak @Serializable data class Circle(val radius: Double) : Shape() ekle. main içinde println("Shape hazır") yazdır.
Başlangıç kodu
// Polymorphic serialization
// buraya yaz
import kotlinx.serialization.Serializable
fun main() {
}Örnek çözüm
@Serializable
sealed class Shape
@Serializable
data class Circle(val radius: Double) : Shape()
fun main() {
println("Shape hazır")
}Beklenen çıktı
Shape hazır
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 sealed class tanımını tamamla
@Serializable
____ class Shape
@Serializable
sealed class Shape
Açıklama: sealed class ile polimorfik serileştirme yapılır.
2 Polymorphic serialization hangi amaçla kullanılır?
- Alt sınıfları tür etiketiyle serileştirmek için Doğru cevap
- JSON'u prettyPrint yapmak için
- JSON'u sıkıştırmak için
- Thread-safe serileştirme için
Açıklama: Polymorphic serialization alt sınıfları tür etiketiyle yazar.
3 Polymorphism parçalarını eşle
| Kavram | Anlamı |
|---|---|
sealed class |
Üst sınıf |
data class |
Alt sınıf |
type |
Tür etiketi |
@Serializable |
İşaret |