by Anahtar Sözcüğü
Arayüz uygulamasını devredin
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.
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.