Vamos ver alguns cenários em que se deve usar a classe abstrata:
- Quando você quiser usar o conceito de herança no código (compartilhar o código entre muitas classes relacionadas), fornecendo métodos comuns da classe base que as subclasses substituem
- Se houverem requisitos especificados e apenas detalhes parciais de implementação
- Enquanto as classes que herdam as classes abstratas têm vários campos ou métodos comuns (que requerem modificadores que não são public)
- Se você quiser ter métodos que não são final ou não static para modificar o estado de um objeto
- Considere o uso de classes abstratas e herança quando o seu problema for “A é um B”. Por exemplo, “Cão é um Animal”, “Lamborghini é um Carro”, etc.
Agora vamos ver um exemplo que usa a classe abstrata:
public abstract class Carro {
protected abstract void ligar();
protected abstract void desligar();
// getters e setters
}
public class Fusca extends Carro {
@Override
protected void ligar() {
// implementação do método ligar
}
@Override
protected void desligar() {
// implementação do método desligar
}
}