Override de método
Em projetos reais, você frequentemente define comportamentos padrão em uma classe base e personaliza em subclasses. Por exemplo, uma classe ComponenteUI pode ter um método renderizar() que retorna vazio, enquanto Botao e Input o sobrescrevem com lógicas específicas. Isso evita duplicação de código e torna o sistema extensível. Dominar override é essencial para aplicar polimorfismo de forma limpa.
O PROBLEMA
Crie classe Forma com area() retornando 0. Crie Retangulo e Circulo que sobrescrevem area(). Teste polimorfismo.
EXEMPLO
const r = new Retangulo(4,5); r.area() → 20 const c = new Circulo(3); c.area() → 28.27
SOBRE O CONCEITO
Override significa redefinir um método herdado em uma subclasse. Para isso, a subclasse declara um método com o mesmo nome e assinatura da classe pai. No construtor, super() é obrigatório para executar o construtor pai e inicializar propriedades herdadas — esquecer isso causa ReferenceError se o pai espera argumentos ou deixa atributos indefinidos. Erro ao sobrescrever: digitar o nome errado (ex.: area vs area()) ou não usar this para acessar propriedades da instância. No exercício, Forma define area() retornando 0; Retangulo e Circulo devem sobrescrever esse método usando this.largura, this.altura ou this.raio com Math.PI. O polimorfismo permite chamar area() em qualquer objeto Forma e obter o resultado correto.
RESOLUÇÃO