DEV Community

Usando classes abstratas

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)