Classes Abstratas

Classes Abstratas

Observação: O arquivo utilizado neste conteúdo que fala sobre classes abstratas é o 13-abstrato.kt

Vamos nessa?

O que são classes abstratas?

No Kotlin, também podemos fazer o uso do conceito de abstração de classes.

Classes abstratas funcionam como 'plantas' de uma construção, que são feitas para nos basearmos em como iremos criar um prédio ou uma casa em cima.

Considere classes abstratas como se fossem moldes.

Observe abaixo uma classe Abstrata chamada Mamífero:

abstract class Mamifero(val nome: String){

abstract fun falar()//Aqui criamos um método abstrato que só existe na planta, mas que deve ser implementada para que herdará essa classe

//Abixo podemos declarar nossos atributos e métodos dessa classe

var idade: Int = 40

fun acordar(){
println("Acordando...")
}

}

Observe que na declaração da classe, usamos o comando 'abstract' para dizer que ela é abstrata.

E ainda usamos o mesmo comando em um de seus métodos, para informar que o método também é abstrato.

Métodos abstratos precisam obrigatoriamente ser declarados nas classes FILHOS, ok?

Com a classe abstrata criada, chegou o momento de criarmos uma herança, e para isso criamos uma classe chamada Cachorro, observe:

class Cachorro(nome: String): Mamifero(nome){

override fun falar() {//É importante ressaltar que quando temos uma classe PAI do tipo abstrata, com um método do tipo abstrato, sua implementação é obrigatória nas classes FILHOS.
println("Au Au");
}

}

Quando herdamos algo de uma classe abstrata, precisamos implementar todos os seus métodos e atributos declarados com 'abstract'.

Tudo o que vem sem o 'abstract' é opcional de ser implementado pelas classes FILHOS.

Pois se você for parar para pensar: "Ora... como você vai montar um apartamento sem uma planta?".

A classe abstrata é definida como se fosse um molde!

É importante ressaltar que classes abstratas não podem ser instanciadas, devendo ser apenas herdadas.

Observe abaixo como estamos interagindo com essas classes criadas acima:

val cachorro = Cachorro("Lucas")
cachorro.falar()

//Veja como temos acessos aos atributos e métodos herdados da própria classe abstrata
cachorro.acordar()
println(cachorro.idade)

Conclusão

Neste conteúdo você aprendeu como trabalhar com as classes abstratas e alguns conceitos importantes sobre abstração.

Até o próximo conteúdo 🙂