Sobes.tech
Junior

Qual é a diferença entre métodos normais e métodos de extensão em Kotlin?

sobes.tech IA

Resposta da IA

O método comum é uma função declarada dentro de uma classe.

O método de extensão é uma função declarada fora da classe, mas que atua como se fosse um membro dela. Ao declarar um método de extensão, o nome da classe destinatária ao qual se aplica é especificado.

// Método comum
class MyClass {
    fun myMethod() {
        // implementação do método
    }
}

// Método de extensão
fun String.removeVowels(): String {
    // implementação do método
}

fun main() {
    val myObject = MyClass()
    myObject.myMethod() // Chamada de método comum

    val myString = "Hello"
    val stringWithoutVowels = myString.removeVowels() // Chamada de método de extensão
}

Diferenças principais:

  • Declaração: Métodos comuns são declarados dentro da classe, métodos de extensão, fora.
  • Acesso aos membros da classe: Métodos comuns têm acesso direto aos membros private e protected da classe. Métodos de extensão não têm acesso direto aos membros private e protected.
  • this: Em um método comum, this refere-se à instância da classe onde o método é declarado. Em um método de extensão, this refere-se à instância do objeto destinatário para o qual a extensão é chamada.
  • Herança: Métodos comuns podem ser sobrescritos em subclasses. Métodos de extensão não são herdados nem podem ser sobrescritos.
  • Implementação: Métodos comuns fazem parte da implementação da classe. Métodos de extensão são implementados separadamente e não modificam a classe original.

Métodos de extensão são úteis para adicionar funcionalidades a classes existentes sem modificá-las, por exemplo, a classes de bibliotecas externas ou à biblioteca padrão do Kotlin.