Sobes.tech
Middle

Kotlin-də irsiyyət və nümayəndəlik ilə işləməkdə hansı xüsusiyyətlər mövcuddur?

sobes.tech Süni İntellekt

AI-dan cavab

Kotlin-də irsi ümumi halda bağlıdır (final), və siniflər və metodlar açıq şəkildə open kimi işarələnməlidir ki, irsi və üst-üstə yazma mümkün olsun. Yalnız bir sinifdən irsi dəstəklənir, amma çoxlu interfeyslər həyata keçirilə bilər.

İrsi alınanda, əsas sinfin konstruktoru, törəmə sinfin konstruktorundan sonra çağrılır:

open class Base(val name: String) {
    init { println("Base-ni başlatmaq") }
    open fun greeting() { println("Base-dən Salam") }
}

class Derived(name: String, val age: Int) : Base(name) {
    init { println("Derived-ni başlatmaq") }
    override fun greeting() { println("Derived-dən Salam") }
}

Kotlin-də delegasiya by açar sözü ilə dil səviyyəsində həyata keçirilir. Bu, interfeysin həyata keçirilməsini başqa obyektə ötürməyə imkan verir. Bu, birbaşa irsi yerinə rahat alternativdir.

interface Greeter {
    fun greet(name: String)
}

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

class DelegateGreeter(greeter: Greeter) : Greeter by greeter

Burada, DelegateGreeter greet metodunun çağırışını greeter obyektinə delegasiya edir.

Müqayisə:

Xüsusiyyət İrsilik Delegasiya (by)
Əlaqə "bir şeydir" (is a) "sahibdir" (has a)
İcra Birbaşa sinfi genişləndirmək İcra yerinə başqa obyektə ötürmək
Çoxluq Bir əsas sinif Bir neçə interfeys
Elastiklik Daha az elastik Daha elastik, kompozisiya ilə
Görünürlük protected və public irsi alır Interfeyslər vasitəsilə işləyir

Delegasiya, elastikliyi artırmaq və "qırıq əsas sinif" problemlərindən qaçınmaq üçün tez-tez irsiyə üstünlük verilir.