O que é uma classe abstrata?
- Uma classe abstrata serve como uma classe base que não pode ser instanciada diretamente. É utilizada para criar uma forma generalizada de uma classe, permitindo que subclasses forneçam implementações específicas de alguns métodos.
- Métodos abstratos dentro de uma classe abstrata são declarados, mas não têm uma implementação na classe base. As subclasses são obrigadas a fornecer implementações concretas.
Quando usar classes abstratas?
- Use classes abstratas quando deseja garantir que certas funcionalidades sejam obrigatoriamente implementadas pelas subclasses.
- Um exemplo comum seria uma classe abstrata de forma geométrica que fornece a assinatura de um método area(), mas deixa para as subclasses, como Triangle e Rectangle, a responsabilidade de definir como calcular a área.
Implementação com o exemplo de TwoDShape:
Ver exemplo no Pacote abstracao
Explicação do código:
Classe Abstrata TwoDShape:
- Definida como abstrata porque não faz sentido implementar area() diretamente. Cada forma geométrica específica (como um triângulo ou retângulo) deve fornecer sua própria implementação de como calcular a área.
- O método area() é declarado como abstract, forçando as subclasses a implementar sua versão desse método.
Subclasses Triangle e Rectangle:
- Ambas as subclasses herdam de TwoDShape e são obrigadas a implementar o método area().
- Triangle calcula a área com a fórmula base * altura / 2.
- Rectangle calcula a área com a fórmula largura * altura.
Classe AbsShape:
- Demonstra o polimorfismo com classes abstratas. O método area() é chamado de forma polimórfica, e a versão correta do método é executada dependendo do tipo do objeto (Triangle ou Rectangle).
Top comments (0)