Sobes.tech
Junior

¿Cuál es la diferencia entre métodos normales y métodos de extensión en Kotlin?

sobes.tech AI

Respuesta de la IA

El método común es una función declarada dentro de una clase.

El método de extensión es una función declarada fuera de la clase, pero que actúa como si fuera un miembro de ella. Al declarar un método de extensión, se especifica el nombre de la clase destinataria al que se aplica.

// Método común
class MyClass {
    fun myMethod() {
        // implementación del método
    }
}

// Método de extensión
fun String.removeVowels(): String {
    // implementación del método
}

fun main() {
    val myObject = MyClass()
    myObject.myMethod() // Llamada a método común

    val myString = "Hello"
    val stringWithoutVowels = myString.removeVowels() // Llamada a método de extensión
}

Diferencias clave:

  • Declaración: Los métodos comunes se declaran dentro de la clase, los métodos de extensión, fuera.
  • Acceso a miembros de la clase: Los métodos comunes tienen acceso directo a los miembros private y protected de la clase. Los métodos de extensión no tienen acceso directo a los miembros private y protected.
  • this: En un método común, this hace referencia a la instancia de la clase en la que se declara el método. En un método de extensión, this hace referencia a la instancia del objeto destinatario para el cual se llama a la extensión.
  • Herencia: Los métodos comunes pueden ser sobrescritos en subclases. Los métodos de extensión no se heredan ni pueden ser sobrescritos.
  • Implementación: Los métodos comunes son parte de la implementación de la clase. Los métodos de extensión se implementan por separado y no modifican la clase original.

Los métodos de extensión son útiles para agregar funcionalidad a clases existentes sin modificarlas, por ejemplo, a clases de bibliotecas externas o a la biblioteca estándar de Kotlin.