Classe Anônima

Classes Anônimas

Observação: O arquivo utilizado neste conteúdo que fala sobre classes anônimas é o 16-classesAnonimas.kt.

Pronto para mais um conteúdo?

O que são classes anônimas?

No Kotlin conseguimos criar e utilizar classes anônimas, que nada mais são do que classes definidas dentro de um escopo.

Podendo ser este escopo uma variável, onde o nome da variável assume o nome da classe.

Ou quem sabe fazer isso diretamente dentro de um parâmetro de uma função, ou método.

Veja um exemplo de uma classe anônima onde o nome da variável se torna o nome da classe, lembrando que usamos object para declarar essa classe:

//veja o conceito principal de uma classe anônima sendo definida dentro de uma variável:
val classeAnonima = object{
val nome = "Micilini Roll"
val seguro = true
fun falar(){
println("Olá mundo, sou o " + this.nome)
}
}

println(classeAnonima.nome)
classeAnonima.falar()

Classe Anônima com Interface

Para iniciar nossos exemplos, vamos considerar esta pequena Interface (Evento) e uma classe (Programa) que possui um método que recebe uma classe herdada daquela interface:

interface Evento{
fun emSucesso()
}

class Programa{
fun salvar(e: Evento){
println("Abrindo Conversa.")
println("Salvando Valores.")
e.emSucesso()
}
}

Agora vamos começar instanciando a nossa classe Programa da seguinte forma:

val p = Programa()

O conceito de classes anônimas, acontece justamente aqui, quando utilizamos o object herdado da Interface 'Evento', onde declaramos alguns métodos daquela classe ali mesmo:

p.salvar(object : Evento{//O pulo do gato da classe anonima está nessa lógica.
override fun emSucesso(){
println("Tudo certoooo!")
}
})

De modo que dentro do método 'Salvar' existente na classe 'Programa', ele consiga recuperar essa classe anônima de modo a chamar o método 'emSucesso'.

Vale lembrar que o object é um objeto usado para representar a declaração de uma classe.

No exemplo acima é como se tivéssemos criado uma classe com qualquer nome, ao mesmo tempo que ela fosse herdada da interface, para posteriormente passarmos ela como parâmetro para dentro do método 'Salvar'.

Do mesmo modo que criamos uma classe anônima com Interface, nós podemos fazer isso usando classes abstratas.

Conclusão

Neste conteúdo você aprendeu um pouco mais sobre o conceito por trás das classes anônimas, e como utilizá-las.

Até o próximo conteúdo 🥳