Herança básica
Em projetos reais, você frequentemente tem classes que compartilham comportamentos comuns, mas precisam de especializações. Por exemplo, em um sistema de petshop, 'Animal' pode ter nome e som, enquanto 'Cachorro' e 'Gato' herdam essas propriedades e adicionam métodos específicos. Herança com extends evita repetir código e mantém a hierarquia limpa.
O PROBLEMA
Crie classe Animal com nome e som. Crie Cachorro extends Animal com método latir(). Use super() no constructor.
EXEMPLO
const rex = new Cachorro("Rex");
rex.latir() → "Rex faz: Au au!"
rex instanceof Animal → trueSOBRE O CONCEITO
A palavra-chave extends cria uma classe filha que herda da classe pai. O constructor da filha deve chamar super() antes de usar this para inicializar a parte herdada. Um erro comum é esquecer o super(), o que gera um ReferenceError porque o this ainda não foi definido. Outro erro é passar argumentos errados para super(). No exemplo, Cachorro herda o parâmetro nome de Animal e o passa via super(nome). Sem isso, a propriedade nome não seria inicializada corretamente.
RESOLUÇÃO