Sobes.tech
Middle

Kotlin'de kalıtım ve delegasyon ile ilgili hangi özellikler vardır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kotlin'de kalıtım varsayılan olarak kapalıdır (final), ve sınıflar ile metodların kalıtıma ve üzerine yazmaya izin vermesi için açıkça open olarak işaretlenmesi gerekir. Sadece bir sınıftan kalıtım desteklenir, ancak birden fazla arayüz uygulanabilir.

Kalıtım sırasında, temel sınıfın yapıcı metodu, türetilmiş sınıfın yapıcı metodundan sonra çağrılır:

open class Base(val name: String) {
    init { println("Base başlatılıyor") }
    open fun greeting() { println("Base'den Merhaba") }
}

class Derived(name: String, val age: Int) : Base(name) {
    init { println("Derived başlatılıyor") }
    override fun greeting() { println("Derived'den Merhaba") }
}

Kotlin'de delegasyon, dil seviyesinde by anahtar kelimesi kullanılarak uygulanır. Bir arayüzün uygulamasını başka bir nesneye devretmeye olanak tanır. Bu, doğrudan kalıtıma göre kullanışlı bir alternatiftir.

interface Greeter {
    fun greet(name: String)
}

class GreeterImpl : Greeter {
    override fun greet(name: String) {
        println("Merhaba, $name!")
    }
}

class DelegateGreeter(greeter: Greeter) : Greeter by greeter

Burada, DelegateGreeter, greet metodunun çağrısını greeter nesnesine devreder.

Karşılaştırma:

Özellik Kalıtım Delegasyon (by)
İlişki "bir şeydir" (is a) "sahiptir" (has a)
Uygulama Sınıfın doğrudan genişlemesi Uygulamanın başka bir nesneye devri
Çoklu kalıtım Tek temel sınıf Birden çok arayüz
Esneklik Daha az esnek Daha esnek, bileşim yoluyla
Görünürlük protected ve public kalıtılır Arayüzler aracılığıyla çalışır

Delegasyon, esneklik sağlamak ve "kırılgan temel sınıf" sorunlarından kaçınmak için genellikle kalıtımdan daha tercih edilir.