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
privateeprotectedda classe. Métodos de extensão não têm acesso direto aos membrosprivateeprotected. this: Em um método comum,thisrefere-se à instância da classe onde o método é declarado. Em um método de extensão,thisrefere-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.