Pessoal, no começo o conceito de Polimorfismo me confundiu, especialmente a diferença entre Sobrescrita e Sobrecarga. Usei uma analogia automotiva para fixar:
A plataforma MQB da Volkswagen é a superclasse (que serve para Hatch, SUV, Sedan e Wagon [ Save the Wagons]), definindo métodos comuns como acelerar(), frear() e acenderFarol().
Sobrescrita (@Override) → Subclasses mudam o comportamento herdado.
Ex: acelerar() do SUV prioriza torque; do Hatch, resposta e esportividade.Sobrecarga → Mesmo método na mesma classe com parâmetros diferentes.
Ex:
hatch.acelerar(); // Padrão
hatch.acelerar("ModoSport"); // Ajuste de dirigibilidade
Resumo: sobrescrita altera o comportamento entre classes; sobrecarga altera a forma de chamar dentro da mesma classe?