Overriding vs Overloading
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 sobreposição de método permite ao programador fornecer uma implementação alternativa dentro de uma subclasse para 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 é anular?
Como mencionado acima, uma classe pode estender uma superclasse ou uma classe pai, em linguagens de programação orientadas a objetos. Uma classe filha pode ter seus próprios métodos ou pode, opcionalmente, ter suas próprias implementações para métodos já definidos em sua classe pai (ou em uma de suas classes principais). Portanto, quando o último acontece, é chamado de substituição de método. Em outras palavras, se a classe filha fornece uma implementação para um método com a mesma assinatura e tipo de retorno de um método já definido em uma de suas classes pai, esse método é dito ser sobrescrito (substituído) pela implementação da classe filha. Portanto, se houver um método sobrescrito em uma classe, o sistema de tempo de execução terá que decidir qual implementação de método será usada. Esse problema é resolvido examinando o tipo exato de objeto usado para invocá-lo. Se um objeto da classe pai for usado para invocar o método substituído, a implementação na classe pai será usada. Da mesma forma, se for um objeto da classe filha que é usada, a implementação da classe filha é 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. Em 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 method1 (type1 t1) e method1 (type2 t2) dentro da mesma classe, eles estarão sobrecarregados. Em seguida, o sistema terá que decidir qual executar quando for chamado. Esta diferenciação é feita observando o tipo de parâmetro (s) passado para o método. Se o argumento for do tipo1, a primeira implementação será chamada, enquanto se for do tipo2, a segunda implementação será chamada.
Qual é a diferença entre Overriding e Overloading?
Embora a substituição e a sobrecarga de método sejam usadas para fornecer um método com implementações diferentes, existem diferenças importantes entre esses dois conceitos / técnicas. Em primeiro lugar, os assuntos de sobreposição de métodos sempre ficam dentro de classes diferentes, enquanto os assuntos de sobreposição de métodos ficam dentro da mesma classe. Isso significa que a sobreposiçã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ê sobrescreve um método na superclasse, mas sobrecarrega um método dentro de sua própria classe.
Outra diferença é que os métodos substituídos têm o mesmo nome de método, assinatura de método e tipo 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 sobrescritos, o tipo exato de objeto que é usado para invocar os métodos id usados, enquanto para diferenciar entre dois métodos sobrecarregados os tipos dos parâmetros são usados. Outra diferença importante é que a sobrecarga é resolvida em tempo de compilação, enquanto a substituição é resolvida em tempo de execução.