super()
Em projetos reais com herança, cada classe costuma ter seus próprios atributos de inicialização obrigatória. Usar super() no construtor da subclasse evita repetir lógica do construtor pai e garante que os campos herdados sejam configurados corretamente antes de qualquer código específico do filho. Sem super(), você teria que chamar setters ou expor campos protegidos, o que quebra o encapsulamento e dificulta a manutenção.
O PROBLEMA
Veiculo(marca,ano) e Carro estendendo com modelo. Use super().
EXEMPLO
Carro("Toyota",2022,"Corolla").modelo → CorollaSOBRE O CONCEITO
O super() chama o construtor da classe pai e deve ser a primeira instrução dentro do construtor da subclasse. Se você colocar qualquer outro comando antes (como this.modelo = modelo;), o compilador acusa erro. Isso acontece porque o Java precisa garantir que a parte da superclasse esteja completamente construída antes de qualquer operação da subclasse. No erro comum, o aluno escreve algo como super(marca, ano); depois de já ter atribuído modelo, o que viola essa regra. Sempre que uma superclasse não tiver construtor padrão (sem argumentos), é obrigatório usar super(...) com os parâmetros adequados – caso contrário, o compilador tenta inserir um super() implícito que não existe, gerando erro.
RESOLUÇÃO