Junior — Middle
Wie bestimmt Kotlin zur Laufzeit, auf welche Klasse eine Erweiterungsfunktion angewendet wird?
sobes.tech KI
Antwort von AI
Erweiterungsfunktionen in Kotlin sind statisch. Das bedeutet, dass zur Laufzeit die Klasse des Objekts, auf das die Funktion aufgerufen wird, anhand des statischen Typs der Variablen bestimmt wird und nicht anhand des tatsächlichen Objekttyps. Mit anderen Worten, die Erweiterungsfunktion ist nicht virtuell und kann nicht überschrieben werden.
Beispiel:
open class Base
class Derived : Base()
fun Base.foo() = "Base"
fun Derived.foo() = "Derived"
fun main() {
val b: Base = Derived()
println(b.foo()) // Gibt "Base" aus, obwohl das Objekt vom Typ Derived ist
}
Hier wird der Aufruf der Erweiterungsfunktion durch den Typ der Variablen b (Base) bestimmt und nicht durch den tatsächlichen Objekttyp (Derived).