Substituição vs Sobrecarga
O método Overriding e o método Overloading são dois conceitos / técnicas / recursos encontrados em algumas linguagens de programação. Ambos os conceitos permitem que o programador forneça implementações diferentes para métodos com o mesmo nome. A substituição de método permite que o programador forneça uma implementação alternativa dentro de uma subclasse a um método já definido dentro de sua superclasse. A sobrecarga de método permite que o programador forneça implementações diferentes para vários métodos com o mesmo nome (dentro da mesma classe).
O que é substituir?
Como mencionado acima, uma classe pode estender uma super classe ou uma classe pai, em linguagens de programação orientadas a objetos. Uma classe filha pode ter seus próprios métodos ou, opcionalmente, suas próprias implementações para métodos já definidos em sua classe pai (ou em uma de suas classes principais). Então, quando o último acontece, é chamado de substituição de método. Em outras palavras, se a classe filho fornecer uma implementação para um método com a mesma assinatura e tipo de retorno que um método já definido em uma de suas classes pai, esse método será substituído (substituído) pela implementação da classe filho . Portanto, se houver um método substituído em uma classe, o sistema de tempo de execução precisará decidir qual implementação de método será usada. Esse problema foi resolvido observando o tipo exato de objeto usado para invocá-lo. Se um objeto da classe pai for usado para chamar o método substituído, a implementação na classe pai será usada. Da mesma forma, se for um objeto da classe filho usado, a implementação da classe filho será usada. Linguagens de programação modernas como Java, Eifell, C ++ e Python permitem a substituição de métodos.
O que é Sobrecarga?
A sobrecarga de método é um recurso fornecido por algumas linguagens de programação para criar mais de um método com o mesmo nome, mas com diferentes tipos de entrada e saída. Nas linguagens de programação modernas, como Java, C #, C ++ e VB.NET, esse recurso está disponível. Você pode sobrecarregar um método criando outro método com o mesmo nome, mas com uma assinatura de método diferente ou um tipo de retorno diferente (ou ambos). Por exemplo, se você tiver o método1 (tipo1 t1) e o método1 (tipo2 t2) dentro da mesma classe, eles serão sobrecarregados. Em seguida, o sistema terá que decidir qual deles será executado quando for chamado. Essa diferenciação é feita observando o tipo de parâmetro (s) passado (s) para o método Se o argumento for do tipo 1, a primeira implementação será chamada, enquanto se for do tipo 2, a segunda implementação será chamada.
Qual é a diferença entre Overriding e Overloading?
Embora a substituição do método e a sobrecarga do método sejam usadas para fornecer um método com diferentes implementações, existem diferenças importantes entre esses dois conceitos / técnicas. Primeiro, os assuntos de substituição de método sempre permanecem em classes diferentes, enquanto os assuntos de sobrecarga de método permanecem na mesma classe. Isso significa que a substituição só é possível em linguagens de programação orientadas a objetos que permitem herança, enquanto a sobrecarga também pode estar disponível em uma linguagem não orientada a objetos. Em outras palavras, você substitui um método na superclasse, mas sobrecarrega um método dentro da sua própria classe.
Outra diferença é que os métodos substituídos têm o mesmo nome, assinatura e método de retorno, mas os métodos sobrecarregados devem diferir na assinatura ou no tipo de retorno (o nome deve ser o mesmo). Para diferenciar entre dois métodos substituídos, o tipo exato de objeto usado para chamar o ID dos métodos usado, enquanto para diferenciar entre dois métodos sobrecarregados, os tipos dos parâmetros são usados. Outra diferença importante é que a sobrecarga é resolvida no tempo de compilação, enquanto a substituição é resolvida no tempo de execução.