Junior — Middle
Котлин дар вақти иҷро чӣ гуна муайян мекунад, ки функсияи васеъкунӣ ба кадом синф татбиқ мешавад?
sobes.tech AI
Ҷавоб аз AI
Функсияҳои васеъкунӣ дар Kotlin табиати статикӣ доранд. Ин маъно дорад, ки дар вақти иҷро, синфи объект, ки ба он функсия даъват мешавад, бар асоси навъи статикии тағирёбанда муайян карда мешавад, на бар асоси навъи воқеии объект. Ба ибораи дигар, функсияи васеъкунӣ виртуалӣ нест ва наметавонад такрор карда шавад.
Масалан:
open class Base
class Derived : Base()
fun Base.foo() = "Base"
fun Derived.foo() = "Derived"
fun main() {
val b: Base = Derived()
println(b.foo()) // Натиҷа "Base" хоҳад буд, гарчанде ки объект аз навъи Derived аст
}
Ин ҷо, даъвати функсияи васеъкунӣ аз навъи тағирёбандаи b (Base) муайян карда мешавад, на аз навъи воқеии объект (Derived).