CodeBlanks Logo Icon CodeBlanks

Polymorphism

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

Main.kt
// Polymorphic serialization
// buraya yaz
import kotlinx.serialization.Serializable

fun main() {
    
}

Örnek çözüm

Main.kt
@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

Soru
@Serializable
____ class Shape
Cevap
@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

İleri seviye bölümündeki tüm dersler