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.