Olá Pessoal, tudo bom?
O post de hoje irá deixar alguns pontos relacionados a quando usar uma classe abstrata. Confira o post a seguir…
Para começar vamos realizar algumas definições:
Definições…
Uma classe é definida como abstrata se ela for declarada abstrata (dãããã…), ou seja, utilizando a palavra chave abstract como mostra o código abaixo:
1 2 3 |
public abstract class ClasseAbstrata { //Algum código aqui } |
Uma classe abstrata pode possuir zero ou mais métodos abstratos. Esses métodos podem possuir somente as visibilidades public ou protected. Um método abstrato não possui um “corpo”, uma implementação. Ao invés de usar as chaves, deverá ser utilizado um ponto e virgula ao fim do cabeçalho do método, como mostra as linhas 3 e 5:
1 2 3 4 5 6 7 8 9 |
public abstract class ClasseAbstrata { public abstract void metodoAbstrato1(String nome); public abstract String metodoAbstrato2(int valor); //Algum código aqui } |
Uma classe abstrata não pode ser instanciada, mas ela pode ser estendida através de uma Herança. Ao realizar isso, a classe filha deverá prover implementações para todos os métodos abstratos.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class FilhaClasseAbstrata1 extends ClasseAbstrata { public void metodoAbstrato1(String nome){ //realiza alguma operacao aqui } public String metodoAbstrato2(int valor){ //realiza alguma operacao aqui } //Algum código aqui } |
Caso isso não seja satisfeito, a classe filha deverá ser declarada abstrata também, para que uma filha desta nova classe abstrata implemente os métodos abstratos faltantes.
1 2 3 4 5 6 7 8 9 |
public abstract class FilhaClasseAbstrata2 extends ClasseAbstrata { public void metodoAbstrato1(String nome){ //realiza alguma operacao aqui } //Algum código aqui } |
1 2 3 4 5 6 7 8 9 |
public class NetaClasseAbstrata extends FilhaClasseAbstrata2 { public String metodoAbstrato2(int valor){ //realiza alguma operacao aqui } //Algum código aqui } |
É claro que todas as outras coisas relacionadas a uma classe “normal” pode ser realizadas aqui, declaração de atributos, métodos ambos podendo ser estáticos. E no aspecto de herança é possível realizar override de métodos das classes superiores.
Quando utilizar…
Utilizar classes abstratas se uma das situações abaixo ocorrer:
- Compartilhar código entre várias classes estreitamente relacionadas
- Uma hierarquia de classes com muitos atributos/métodos em comum, sendo que estes não podem possuir a visibilidade public.
- Declarar campos não estáticos ou finais em comum, permitindo definir métodos para acessar e modificar os valores desses campos, modificando assim o estado do objeto ao qual pertencem.
Quando não utilizar…
Não utilizar classes abstratas se uma das situações abaixo ocorrer:
- Todas as classes de uma hierarquia podem ser instanciadas.
- Hierarquia não tão estreitamente relacionadas.
- Especificar um comportamento de algo e não o tipo deste.
finnaly{
Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!
Até um próximo post!
Leave a Reply