Qual é a diferença entre sobrecarga de método e sobrescrita de método na programação orientada a objetos?
Questão
Qual é a diferença entre sobrecarga de método e sobrescrita de método na programação orientada a objetos?
Alternativas
A) Sobrecarga de método refere-se a ter vários métodos com o mesmo nome e parâmetros em diferentes classes, enquanto sobrescrita de método refere-se a ter vários métodos com o mesmo nome e parâmetros em uma mesma classe.
B) Sobrecarga de método refere-se a ter vários métodos com implementações diferentes em diferentes classes, enquanto sobrescrita de método refere-se a ter vários métodos com o mesmo nome, mas diferentes parâmetros.
C) Sobrecarga de método refere-se a ter vários métodos com implementações diferentes em uma mesma classe, enquanto sobrescrita de método refere-se a substituir um método existente em uma classe filha por uma implementação diferente em uma classe pai.
D) Sobrecarga de método refere-se a ter vários métodos com o mesmo nome, mas diferentes parâmetros, enquanto sobrescrita de método refere-se a ter vários métodos com implementações diferentes em diferentes classes.
E) Sobrecarga de método refere-se a ter vários métodos com o mesmo nome, mas diferentes parâmetros, enquanto sobrescrita de método refere-se a substituir um método existente em uma classe pai por uma implementação diferente em uma classe filha.
Explicação
Vamos separar os dois conceitos clássicos de POO:
- Sobrecarga de método (overloading)
- Ocorre na mesma classe (ou também pode envolver herança, dependendo da linguagem), quando existem vários métodos com o mesmo nome, porém com assinaturas diferentes.
- “Assinatura diferente” normalmente significa parâmetros diferentes (quantidade, tipos e/ou ordem dos parâmetros).
- Ex.:
somar(int a, int b)esomar(double a, double b).
- Sobrescrita de método (overriding)
- Ocorre entre classes em herança: uma classe filha fornece uma nova implementação para um método que ela herdou da classe pai.
- Em geral, o método sobrescrito mantém a mesma assinatura (mesmo nome e parâmetros) e altera o comportamento (implementação) para a classe filha.
- Ex.: classe
AnimaltemfazerSom(), e a classeCachorrosobrescrevefazerSom().
Analisando as alternativas:
- E descreve corretamente:
- sobrecarga = mesmo nome, parâmetros diferentes;
- sobrescrita = classe filha substitui a implementação herdada da classe pai por outra.
As demais alternativas trocam os conceitos, colocam “mesmos parâmetros” na sobrecarga (o que não caracteriza sobrecarga) ou descrevem a direção de forma errada.