Classes abstratas
Já vimos que em Java podemos criar classes genéricas e estende-las criando classes mais especificas (herança). Também vimos que podemos modificar os comportamentos da classe padrão em cada classe especifica (polimorfismo). Na maioria das vezes a função da classe genérica é apenas fornecer um "modelo" para que as classe filhas implementem, sendo assim não seria necessária a instanciação dessa classe genérica.
Em Java podemos criar classes que não podem ser instanciadas. Dizemos que temos dois tipos de classe: concretas (podem ser instanciadas) e não concretas (não podem ser instanciadas). Para criar uma classe abstrata em Java utilizamos a palavra reservada abstract.
Uma classe abstrata pode conter métodos abstratos e métodos não abstratos, porém, uma classe que não é abstrata não pode conter nenhum método abstrato. Métodos abstratos não fornecem implementações.
A classe concreta que implementar a superclasse abstrata deve implementar os métodos abstratos da mesma. Construtores e métodos estáticos (static) não devem ser abstratos. O construtor não é herdado, portanto nunca seria sobrescrito. Métodos estáticos não podem ser reescritos portanto não faz sentido que o mesmo seja abstrato.
Exemplo:
Criação da classe abstrata Transporte.
public abstract class Transporte {
String cor,
int ano;
abstract void parar();
}
Criação da classe Moto.
public class Moto extends Transporte {
String cor,
int ano;
@Override
void parar() {
//lógica para parar a moto
}
}
Criação da classe Navio.
public class Navio extends Transporte {
String cor,
int ano;
@Override
void parar() {
//lógica para parar o navio
}
}
Com isso garantimos que todas as classes que implementarem a classe Transporte implementaram o método parar.
Bom com isso encerramos mais um conteúdo, até a próxima pessoal.
Nenhum comentário:
Postar um comentário