Sobes.tech
Junior — Middle

¿Cómo determina Kotlin en tiempo de ejecución a qué clase se aplica una función de extensión?

sobes.tech AI

Respuesta de la IA

Las funciones de extensión en Kotlin son de naturaleza estática. Esto significa que en tiempo de ejecución se determina la clase del objeto al que se llama a la función, basándose en el tipo estático de la variable, y no en el tipo real del objeto. En otras palabras, la función de extensión no es virtual y no puede ser sobrescrita.

Ejemplo:

open class Base
class Derived : Base()

fun Base.foo() = "Base"
fun Derived.foo() = "Derived"

fun main() {
    val b: Base = Derived()
    println(b.foo()) // Imprimirá "Base", a pesar de que el objeto es de tipo Derived
}

Aquí, la llamada a la función de extensión se determina por el tipo de la variable b (Base), y no por el tipo real del objeto (Derived).