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.