Junior — Middle
Kotlin qanday qilib bajarilish vaqtida kengaytirish funksiyasi qaysi sinfga taalluqli ekanligini aniqlaydi?
sobes.tech AI
AIdan javob
Kotlin'da kengaytma funksiyalari tabiatan statikdir. Bu, bajarilish vaqtida funksiyaning chaqirilayotgan ob'ektining sinfi, o'zgaruvchining statik turi asosida aniqlanadi va ob'ektning haqiqiy turi asosida emas. Boshqacha qilib aytganda, kengaytma funksiyasi virtual emas va uni qayta yozib bo'lmaydi.
Misol:
open class Base
class Derived : Base()
fun Base.foo() = "Base"
fun Derived.foo() = "Derived"
fun main() {
val b: Base = Derived()
println(b.foo()) // "Base" chiqaradi, ob'ekt Derived bo'lsa ham
}
Bu yerda kengaytma funksiyasining chaqirilishi b o'zgaruvchisining (Base) turi bilan aniqlanadi, ob'ektning haqiqiy turi (Derived) bilan emas.