Kotlin Academy · Ders

by Anahtar Sözcüğü

Arayüz uygulamasını devredin

1. ders / 413 adım

by Anahtar Sözcüğü, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.

Delegasyon Nedir

Sınıf delegasyonu, bir nesnenin bir arayüzün uygulamasını başka bir nesneye devretmesini sağlar. Kotlin bunu by anahtar sözcüğüyle dilin içine yerleştirir.

Bileşimi zahmetsiz hâle getirir.

Delege Edilecek Bir Arayüz

Bir arayüz ve somut bir uygulamayla başlayın. Daha sonra bu uygulamaya delegasyon yapacağız.

interface Speaker {
    fun speak(): String
}

class LoudSpeaker : Speaker {
    override fun speak() = "HELLO!"
}

fun main() {
    println(LoudSpeaker().speak())
}

by Anahtar Sözcüğü

class X(d: Iface) : Iface by d yazın. Derleyici, her arayüz üyesi için d'yi çağıran yönlendirme yöntemleri oluşturur.

interface Speaker {
    fun speak(): String
}

class LoudSpeaker : Speaker {
    override fun speak() = "HELLO!"
}

class Announcer(s: Speaker) : Speaker by s

fun main() {
    val a = Announcer(LoudSpeaker())
    println(a.speak())
}

Tekrarlı Kod Yok

by olmadan her arayüz işlevi için yönlendirme yöntemini elle yazmanız gerekirdi. Delegasyon bunların tümünü otomatik olarak oluşturur.

interface Repository {
    fun save(item: String): String
    fun count(): Int
}

class MemoryRepo : Repository {
    private val items = mutableListOf<String>()
    override fun save(item: String): String { items.add(item); return item }
    override fun count() = items.size
}

class LoggingRepo(r: Repository) : Repository by r

fun main() {
    val repo = LoggingRepo(MemoryRepo())
    repo.save("a")
    println(repo.count())
}

Seçili Üyeleri Geçersiz Kılma

Yalnızca özelleştirmek istediğiniz üyeleri geçersiz kılabilirsiniz; geri kalanlar yine de delegeye yönlendirilir.

interface Repository {
    fun save(item: String): String
    fun count(): Int
}

class MemoryRepo : Repository {
    private val items = mutableListOf<String>()
    override fun save(item: String): String { items.add(item); return item }
    override fun count() = items.size
}

class LoggingRepo(private val r: Repository) : Repository by r {
    override fun save(item: String): String {
        println("saving " + item)
        return r.save(item)
    }
}

fun main() {
    val repo = LoggingRepo(MemoryRepo())
    repo.save("book")
    println(repo.count())
}

Parametre Olarak Delege

Delege genellikle birincil kurucu aracılığıyla aktarılır. Bazı üyeleri de geçersiz kılacaksanız private val ile bir referans tutabilirsiniz.

interface Clock { fun now(): Int }

class FixedClock : Clock { override fun now() = 12 }

class App(private val clock: Clock) : Clock by clock

fun main() {
    println(App(FixedClock()).now())
}

Standart Arayüzlere Delegasyon

Yerleşik koleksiyon arayüzlerine delegasyon yaparak temel koleksiyon gibi davranan bir sarmalayıcıyı anında elde edebilirsiniz.

class TaggedList(private val inner: List<String>) : List<String> by inner {
    val tag = "v1"
}

fun main() {
    val tl = TaggedList(listOf("x", "y"))
    println(tl.size)
    println(tl[0])
    println(tl.tag)
}

Nasıl Derlenir

Derleyici arka planda delegeyi saklar ve yönlendirme uygulamaları üretir. Oluşturulan yöntemler, delegenin karşılık gelen yöntemini çağırır. Bu, elle yazılmış yönlendirmeyle aynıdır; tek fark, yazma zahmetinin ortadan kalkmasıdır.

Yakalanmış Anlık Görüntü

Önemli bir ayrıntı: Delege referansı nesne oluşturulurken yakalanır. Geçersiz kılınan üyeler delegeyi açıkça çağırır; ancak oluşturulan yönlendiriciler başlangıçta sağlanan örneği kullanır.

interface Source { fun value(): Int }

class Const(val n: Int) : Source { override fun value() = n }

class Wrapper(s: Source) : Source by s

fun main() {
    val w = Wrapper(Const(42))
    println(w.value())
}

by Neden Kullanılır

by anahtar sözcüğü şunları yapmanızı sağlar:

  • Mevcut uygulamaları yeniden kullanmak
  • Alt sınıflama yapmadan davranış eklemek
  • Kırılgan kalıtım hiyerarşilerinden kaçınmak

Kotlin'in kalıtım yerine bileşim ilkesine verdiği birinci sınıf destektir.

Temel

Bu by anahtar sözcüğü, bu kurstaki her şeyin temelidir. Sırada, davranışı bileştirmek için üye nesnelere delegasyon yapmayı daha yakından inceleyeceğiz.

Kısa Bir Kontrol

by anahtar sözcüğünü ne kadar anladığınızı sınayın.

Özet

by ile sınıf delegasyonunu öğrendiniz:

  • Bir arayüzü başka bir nesneye delege etmek
  • Otomatik oluşturulan yönlendirme yöntemleri
  • Geri kalanları yönlendirirken seçili üyeleri geçersiz kılmak
  • Yerleşik arayüzlerle de çalışır

Sırada: davranışı bileştirmek için üyelere delegasyon.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Kotlin öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
51
Dersler
203

Sıkça Sorulan Sorular

“by Anahtar Sözcüğü” dersi ücretsiz mi?

Evet — “by Anahtar Sözcüğü” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.

“by Anahtar Sözcüğü” dersinde ne öğreneceğim?

Arayüz uygulamasını devredin Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“by Anahtar Sözcüğü” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. by Anahtar Sözcüğü
  2. Üyelere Yetki Devretme
  3. Yetki Devretme ve Kalıtım
  4. Uygulamalı Tasarım Kalıpları
← Kotlin Academy Sayfasına Dön