Classe abstrata
Em sistemas reais, você frequentemente precisa definir um comportamento comum para várias classes, mas sem permitir que a classe base seja instanciada. Por exemplo, em um jogo, uma classe abstrata 'Personagem' pode ter métodos como 'mover()', mas você nunca cria um 'Personagem' genérico — apenas heróis ou inimigos concretos. Dominar classes abstratas evita que você ou sua equipe criem objetos sem sentido, mantendo a hierarquia de classes limpa e segura.
O PROBLEMA
Forma abstrata. Triangulo e Retangulo. Tente instanciar Forma.
EXEMPLO
new Forma() → erro
SOBRE O CONCEITO
Uma classe abstrata é declarada com a palavra-chave abstract e não pode ser instanciada diretamente. Ela serve como base para outras classes, podendo conter métodos abstratos (sem corpo) que as subclasses são obrigadas a implementar com @Override. No exercício, Forma é abstrata; Triangulo e Retangulo estendem-na e fornecem implementações concretas. O erro comum de tentar new Forma() causa falha de compilação porque a JVM não sabe como criar um objeto de um tipo incompleto. Isso força o programador a sempre usar subclasses, garantindo que cada forma tenha sua lógica específica.
RESOLUÇÃO