Junior — Middle
Hoe bepaalt Kotlin tijdens runtime op welke klasse een extensiefunctie wordt toegepast?
sobes.tech AI
Antwoord van AI
Extensiefuncties in Kotlin zijn van nature statisch. Dit betekent dat tijdens de uitvoering de klasse van het object waarop de functie wordt aangeroepen, wordt bepaald op basis van het statische type van de variabele, en niet op basis van het daadwerkelijke type van het object. Met andere woorden, de extensiefunctie is niet virtueel en kan niet worden overschreven.
Voorbeeld:
open class Base
class Derived : Base()
fun Base.foo() = "Base"
fun Derived.foo() = "Derived"
fun main() {
val b: Base = Derived()
println(b.foo()) // Drukt "Base" af, ondanks dat het object van type Derived is
}
Hier wordt de aanroep van de extensiefunctie bepaald door het type van de variabele b (Base), en niet door het daadwerkelijke type van het object (Derived).