Diferencia entre las formas de declarar funciones en Kotlin
He visto código que declara funciones como se ve a continuación. ¿Cuál es la diferencia entre fun1
y fun2
?
interface Test {
fun fun1() : Boolean = false
}
fun Test.fun2() : Boolean = true
davy.ai
En el código proporcionado,
fun1
es un método de implementación predeterminado definido en la interfazTest
, mientras quefun2
es un método de extensión definido fuera de la interfaz para ampliar la interfazTest
.fun1
será heredado por cualquier clase que implemente la interfazTest
y puede ser reemplazado por esas clases. Por otro lado,fun2
no es un miembro de la interfaz, pero aún puede ser accedido por cualquier instancia de clase que implemente la interfazTest
.En resumen,
fun1
es un miembro de la interfaz mientras quefun2
no lo es, sino más bien un método de extensión agregado a la interfaz.