Junior — Middle
Kotlin çalışma zamanında genişletme fonksiyonunun hangi sınıfa uygulandığını nasıl belirler?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kotlin'de genişletme fonksiyonları doğası gereği statiktir. Bu, çalışma zamanında fonksiyonun çağrıldığı nesnenin sınıfının, değişkenin statik türüne göre belirlendiği anlamına gelir ve nesnenin gerçek türüne göre değil. Başka bir deyişle, genişletme fonksiyonu sanal değildir ve üzerine yazılamaz.
Örnek:
open class Base
class Derived : Base()
fun Base.foo() = "Base"
fun Derived.foo() = "Derived"
fun main() {
val b: Base = Derived()
println(b.foo()) // "Base" yazdırır, nesne Derived olmasına rağmen
}
Burada, genişletme fonksiyonunun çağrısı, değişken b'nin (Base) tipi tarafından belirlenir, gerçek nesne tipi (Derived) tarafından değil.