Diferença entre sobrecarga e substituição de método

Sobrecarga de método

A sobrecarga de método, também conhecida como sobrecarga de função ou polimorfismo de tempo de compilação, é um conceito de ter dois ou mais métodos com o mesmo nome, mas com assinatura diferente no mesmo escopo. Existem muitas linguagens de programação compatíveis com esse recurso: Ada, C ++, C #, D e Java.

Exemplo de Sobrecarga de Método em C #
Como mostrado no exemplo acima, o método 'Polygon' é sobrecarregado três vezes com assinatura de método diferente, ou seja, o tipo ou o número de parâmetros são diferentes.

Substituição de método

A substituição de método, também conhecida como Substituição de Função ou Polimorfismo no Tempo de Execução, é um recurso de POO que permite que uma classe filha forneça sua própria implementação ao método definido na classe pai. A implementação na classe filho substitui a definição do método na classe base, desde que o método na classe filho deva ter o mesmo nome, assinatura e tipo de retorno.

Exemplo de substituição de método em c #
Aqui, o método draw na classe Source2 substitui o método draw definido na classe Source1.

Diferença entre sobrecarga de método e substituição de método

  1. No método, os métodos de sobrecarga devem ter uma assinatura diferente. No método, os métodos de substituição devem ter a mesma assinatura.
  2. Sobrecarga de função é "adicionar" ou "estender" mais ao comportamento do método. A substituição de função é "alterar" ou "redefinir" completamente o comportamento de um método.
  3. A sobrecarga de método é usada para obter o polimorfismo em tempo de compilação; a substituição de método é usada para obter polimorfismo em tempo de execução.
  4. No método / função, o compilador de sobrecarga sabe qual objeto atribuído a qual classe no momento da compilação, mas no método substituindo essa informação não é conhecida até o tempo de execução.
  5. A sobrecarga de função ocorre na mesma classe, enquanto a substituição ocorre em uma classe derivada de uma classe base.