Diferença chave : Sobrecarga significa ter dois métodos da mesma classe com o mesmo nome e com diferentes tipos de parâmetros, enquanto que a substituição significa ter dois métodos diferentes na mesma classe com os mesmos tipos de parâmetros, mas com diferentes implementações.
Os métodos que sobrescrevem e sobrecarregam são dois conceitos ou técnicas usados em linguagens de programação java. Ambos os conceitos permitem que o programador forneça diferentes implementações para métodos com o mesmo nome. Este artigo diferencia entre os dois conceitos de programação.
A sobrecarga de função ou sobrecarga de método permite criar vários métodos com o mesmo nome, na mesma classe, mas diferentes uns dos outros na entrada e no tipo de saída da função. É simplesmente definido como a capacidade de uma função para executar tarefas diferentes.
Na sobrecarga, as implementações do método compartilham o mesmo nome porque executam tarefas semelhantes. Além disso, a sobrecarga é considerada de natureza polimórfica. As funções que possuem diferentes implementações dependem de seus tipos de argumentos especificados. Geralmente é associado a linguagens de programação estáticas que impõem a verificação de tipos em chamadas de função. Também é considerado prático, pois permite ao programador escrever vários métodos diferentes na mesma classe. No entanto, ao sobrecarregar o processador de tempo de execução, o nome de todos os métodos sobrecarregados é alterado, o que pode ser um problema.
A substituição de métodos, na programação orientada a objetos, é um recurso que permite que uma subclasse ou classe filha forneça uma implementação específica de um método que já é fornecido por uma de suas superclasses ou classes principais. A implementação na subclasse substitui ou substitui a implementação na classe pai fornecendo um método com o mesmo nome, mesmos parâmetros ou assinatura e o mesmo tipo de retorno que o método na classe pai.
No método de substituição, as funções são codificadas para realizar tarefas específicas em um programa. Substituir depende da presença de uma função de classe base para sua aparência. Aqui, a função executada é determinada pelo objeto que é usado para invocá-la, ou seja, se um objeto de uma classe pai for usado para invocar o método, a função na classe pai será executada. Substituir é polimorfo na natureza; Ele ajuda a projetar programas baseados no primeiro parâmetro implícito, que pode ser resolvido em tempo de execução. Existem algumas linguagens em java que permitem que um programador evite que um método seja sobrescrito.
Comparação entre Sobrecarregar e Substituir:
Sobrecarga | Substituindo | |
Definição | Isso significa ter métodos da mesma classe com o mesmo nome, mas cada método tem parâmetros diferentes ou tem os mesmos parâmetros com tipos e ordens diferentes. | Isso significa ter uma subclasse com os mesmos métodos sob o mesmo nome e exatamente o mesmo tipo de parâmetros e o mesmo tipo de retorno que uma superclasse. |
Significado | Isso significa que mais de um método compartilha o mesmo nome na mesma classe, mas possui uma assinatura diferente. | Isso significa que o método da classe base é redefinido na classe derivada com a mesma assinatura. |
Comportamento | Adiciona ou estende ao comportamento dos métodos. | Altera o comportamento existente de um método. |
Polimorfismo | É um polimorfismo no tempo de compilação. | É um polimorfismo de tempo de execução. |
Método estático | O método estático pode ser sobrecarregado. | O método estático não pode ser substituído. |
Ligação | Vínculo estático. | Ligação dinâmica. |
Herança | Pode ou não exigir herança. | Sempre requer herança. |
Associação | Geralmente é associado a linguagens de programa estáticas. | Geralmente é associado a programas orientados a objetos. |
Assinatura | Métodos têm assinatura diferente. | Os métodos devem ter a mesma assinatura. |
Rapidez | É mais rápido que ignorar. | É lento em comparação com a sobrecarga. |
Classes | Não requer mais de uma classe para sobrecarga. | Requer pelo menos duas classes para sobrecarga. |
Nível | Métodos podem ter qualquer nível de acesso. | Os métodos possuem um nível de acesso igual ou amplo. |
Exemplo | Class Adicionar { soma int (int a, int b) { return a + b; } int sum (int a) { return a + 10; } } | Classe A // Super Classe { void display (int num) { print num; } } // A classe B herda a classe A Classe B // Subclasse { void display (int num) { print num; } } |