Considere o código Java escrito abaixo. public class Veiculo { public void acelerar() { System.out.println("Veículo acelerando"); } } public class Carro extends Veiculo { public void acelerar() { System.out.println("Carro acelerando"); } } Acontece quando o método acelerar () é chamado para o objeto do tipo Carro:
- A)Um erro de compilação ocorre
Errada, porque a sobrescrita do método em Carro é válida e não gera erro de compilação.
- B)Ambos os métodos, de Veiculo e Carro, são executados em sequência
Errada, pois em sobrescrita Java não executa automaticamente os dois métodos em sequência.
- C)Apenas o método de Veiculo é executado
Errada, porque o objeto é de Carro e a implementação de Carro substitui a de Veiculo na chamada.
- D)Apenas o método de Carro é executado
Certa, porque o método sobrescrito em Carro é o que será executado para um objeto Carro.
Gabarito: D
Em Java, quando uma classe filha herda de uma classe pai e redefine um método com a mesma assinatura, ocorre o chamado polimorfismo por sobrescrita (override). Na prática, o método executado é o da classe do objeto real em tempo de execução, e não o da referência do tipo mais genérico. Aqui, Carro estende Veiculo e cria sua própria versão de acelerar(), então o comportamento de Carro substitui o de Veiculo para esse objeto. Isso acontece porque o Java usa despacho dinâmico para métodos de instância: ao chamar acelerar() em um objeto do tipo Carro, o programa procura a implementação mais específica disponível na própria classe Carro. Se ela existe, é ela que entra em ação. O método da superclasse fica “guardado na gaveta” como comportamento herdado, mas não é o escolhido nessa chamada específica. Por isso, o gabarito é a letra D. Ao chamar acelerar() em um objeto Carro, apenas o método de Carro é executado, imprimindo "Carro acelerando". Não há erro de compilação, porque a sobrescrita está correta, e também não há execução em sequência dos dois métodos, pois override não empilha comportamentos automaticamente. Resumo de prova: herança dá acesso ao método do pai, mas sobrescrita troca o comportamento do filho. Se a banca mostrar uma classe filha com método igual ao da mãe, pense primeiro em polimorfismo e despacho em tempo de execução.