Diferença entre sobrecarga e substituição | Sobrecarga x Sobreposição
Publicados: 2021-06-15Índice
Introdução
A Programação Orientada a Objetos desempenha um papel importante nos setores de desenvolvimento de software. Vários conceitos estão associados a este tipo de programação como classe, objeto, polimorfismo, herança, abstração de dados, programação genérica e manipulação excepcional.
Os desenvolvedores sempre acham o conceito de polimorfismo bastante interessante que tem sub-conceitos como sobrecarga de método, substituição de método, etc. No entanto, para entender melhor o conceito de polimorfismo, a diferença entre sobrecarga e substituição deve ser entendida.
Diferença entre sobrecarga de método e substituição de método
Existem muitas diferenças entre a sobrecarga de métodos e a substituição de métodos . A lista de diferenças entre sobrecarga de método e substituição em java é tabulada abaixo:
Sobrecarga do método | Substituição de método | |
1 | O método é usado para aumentar a legibilidade do programa. | O método é usado para fornecer a implementação do método fornecido pela superclasse. |
2 | É realizado dentro de uma classe | Ocorre em duas classes com relacionamento IS-A (herança). A classe base e uma classe filha são necessárias para substituição. |
3 | Métodos ou funções devem ter o mesmo nome e assinaturas diferentes. | Métodos ou funções devem ter o mesmo nome e as mesmas assinaturas. |
4 | Os parâmetros usados neste método devem ser diferentes. | Os mesmos parâmetros devem ser usados no caso de substituição de método. |
5 | É um exemplo de polimorfismo em tempo de compilação. A ligação da chamada do método de sobrecarga à sua definição acontece no tempo de compilação. | É um exemplo de polimorfismo em tempo de execução. A ligação da chamada do método substituído à sua definição acontece no tempo de execução. |
6 | Somente alterando o tipo de retorno, a sobrecarga do método não pode ser realizada. O tipo de retorno pode ser diferente ou igual. Mas, os parâmetros devem ser diferentes. | O tipo de retorno na substituição de método pode ser o mesmo ou covariante. |
7 | A sobrecarga de métodos pode ser aplicada a métodos estáticos. Isso significa que uma classe pode ter mais de um método estático com o mesmo nome. | A substituição de método não pode ser aplicada a métodos estáticos. |
8 | A associação estática está sendo usada para sobrecarga de método. | A associação dinâmica está sendo usada para substituição de método. |
9 | Melhor desempenho é dado pela sobrecarga de métodos. | Menor desempenho em comparação com a sobrecarga de métodos. A razão é que a vinculação de métodos substituídos está sendo feita em tempo de execução. |
10 | Os métodos privados e finais podem ser sobrecarregados. Uma classe pode ter mais de um método privado/final com o mesmo nome. | Métodos privados e finais não podem ser substituídos. Uma classe filha não pode substituir os métodos private/final de sua classe base. |
11 | A herança pode ou não ser necessária em caso de sobrecarga do método. | A herança é sempre necessária no caso de substituição de método. |
12 | Ele é usado para adicionar mais ao comportamento dos métodos. | Ele é usado para alterar o comportamento dos métodos existentes. |
13 | Não há necessidade da presença de mais de uma classe na sobrecarga de métodos. | Há sempre a necessidade de pelo menos duas classes na substituição de métodos. |
14 | Se a sobrecarga quebrar, o erro de tempo de compilação virá e é fácil de corrigir. | Se substituir quebras, isso pode causar sérios problemas em nosso programa, pois o efeito será visível em tempo de execução. |
15 | A sobrecarga do método deve ter uma assinatura diferente. | A substituição do método deve ter a mesma assinatura. |
16 | Os modificadores de acesso no método de sobrecarga podem ser qualquer coisa ou diferente. | O modificador de acesso do método da subclasse deve ser igual ou superior ao modificador de acesso do método da superclasse no método de substituição. |
17 | Exceções lançadas podem ser qualquer coisa no conceito de sobrecarga de método. | Na substituição de método, as exceções não verificadas lançadas podem ser qualquer coisa. Para exceções verificadas, o método de substituição não deve lançar nenhuma exceção nova ou mais ampla do que as declaradas pelo método de substituição. |
18 | O compilador sempre cuida da resolução do método com base no tipo de referência. | A JVM cuida da resolução do método com base no objeto de tempo de execução. |
Aprenda cursos de software online das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.
Qual o proximo?
Se você estiver interessado em aprender mais sobre desenvolvimento de software full-stack, confira o Programa PG Executivo do upGrad & IIIT-B em Desenvolvimento de Software Full-Stack, projetado para profissionais que trabalham e oferece mais de 500 horas de treinamento rigoroso, mais de 9 projetos e atribuições, status de ex-alunos do IIIT-B, projetos práticos práticos e assistência de trabalho com as principais empresas.
O que é polimorfismo de tempo de execução?
O polimorfismo de tempo de execução é um tipo de polimorfismo que envolve tipagem dinâmica. Isso significa que os objetos podem ser manipulados como se fossem de um único tipo. Isso é semelhante ao polimorfismo estático em que os objetos são manipulados como se tivessem um único tipo, independentemente do tipo subjacente. É um dos cinco principais princípios de design de software. É usado com programação orientada a objetos. Isso significa que uma variável pode se referir a diferentes objetos dependendo das condições de tempo de execução. Por exemplo, uma variável pode ser usada para se referir a um objeto Dog quando a variável é declarada, mas durante a execução do programa, a variável pode se referir a um objeto Cat. É uma conversão automática de tipo. Por exemplo, se você tiver uma variável inteira i e atribuir um valor de string a ela, ela se tornará uma variável de string.
Como a substituição é diferente da sobrecarga?
Podemos substituir o método sobrecarregado?
Um método sobrecarregado é o mesmo que um regular (em termos de número e tipo de parâmetros), mas com a diferença de que o método sobrecarregado é escrito de tal forma que pode aceitar parâmetros de um tipo diferente do regular. Você pode substituir um método sobrecarregado da mesma maneira que substitui um método normal.