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.

Resposta certa

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:

  1. 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) e somar(double a, double b).
  1. 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 Animal tem fazerSom(), e a classe Cachorro sobrescreve fazerSom().

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.

Carregando…

Questões relacionadas

Ver últimas questões