Diferença chave - sobrecarga vs substituição em Java
A Programação Orientada a Objetos (OOP) é um paradigma importante no desenvolvimento de software. É uma metodologia para projetar um programa usando classes e objetos. Uma classe é um projeto. Ele descreve o que deve conter no objeto. Ele define as propriedades ou atributos e os métodos em que o objeto deve consistir. Portanto, um objeto é uma instância de uma classe. Esses objetos se comunicam com outros objetos. Um dos principais conceitos de OOP é o polimorfismo. É a capacidade de um objeto se comportar de várias maneiras. O polimorfismo é categorizado em duas seções que estão sobrecarregando e substituindo. Este artigo discute a diferença entre esses dois em Java. A principal diferença entre sobrecarregar e substituir em Java é que Overloading é a capacidade de criar vários métodos do mesmo nome com diferentes implementações e Overriding é fornecer uma implementação para um método de subclasse que já existe na superclasse.
CONTEÚDO
1. Visão geral e diferença principal
2. O que é sobrecarga em Java
3. O que está substituindo em Java
4. Semelhanças entre sobrecarga e substituição em Java
5. Comparação lado a lado - Sobrecarga vs Substituição em Java em formato tabular
6. Resumo
O que é sobrecarga em Java?
Sobrecarga é a capacidade de criar vários métodos com o mesmo nome com diferentes implementações. Consulte o código Java abaixo.
Figura 01: Programa Java que explica a sobrecarga com diferentes números de argumentos
De acordo com o programa acima, a classe A contém dois métodos com o mesmo nome. O primeiro método de soma possui dois parâmetros. O segundo método de soma possui três parâmetros. Ao criar um objeto do tipo A e chamar sum (2,3), ele chamará o método sum com dois parâmetros que são sum (int a, int b) e retorna 5. Ao criar um objeto do tipo A e chamar sum (2, 3,4), ele chamará o outro método sum com três parâmetros que é a soma (int a, int b, int c) e retorna 9.
O nome do método é o mesmo, mas o número de parâmetros é diferente. Pode-se observar que o mesmo objeto está se comportando de forma diferente. Esse conceito é conhecido como sobrecarga. Também é referido como ligação estática ou polimorfismo de tempo de compilação.
Também pode ser sobrecarregado com diferentes tipos de dados. Consulte o código Java abaixo.
Figura 02: Programa Java que explica a sobrecarga com diferentes números de argumentos
De acordo com o programa acima, a classe A consiste em dois métodos com o mesmo nome. O método sum (int a, int b) recebe dois valores inteiros. A soma (double a double b) recebe dois valores duplos. Ao criar o objeto do tipo A e chamar sum (2,3), ele chamará sum (int a, int b) e retornará o valor 5. Ao chamar sum (3.4, 5.6), ele chamará sum (double a double b) e retorne o valor 9.0. Neste exemplo, os métodos têm o mesmo nome, mas um tipo diferente de variáveis. Isso também está sobrecarregando.
O que é substituir em Java?
Em Java, é possível construir subclasses com classes já existentes. Em vez de criar a nova classe desde o início, é possível usar as propriedades e métodos da classe já existente. A classe existente é a superclasse e a classe derivada é a subclasse. Quando a subclasse fornece uma implementação para um método, que já está na superclasse, é conhecido como substituição. Consulte o programa Java abaixo.
Figura 03: programa Java para substituição
De acordo com o programa acima, a Classe A tem um método display (). A classe B é uma extensão da classe A, portanto, as propriedades e métodos da classe A são acessíveis pela classe B. A classe B tem o método display () com uma implementação específica. Ao criar um objeto do tipo A e chamar o método de exibição, ele fornecerá a saída B. Mesmo que a classe A tenha um método de exibição, ele é sobrescrito pelo método de exibição da classe B. A subclasse está implementando um método que já existe na superclasse.
Este conceito é um tipo de polimorfismo conhecido como override. É também chamado de Late Binding, Dynamic Binding, Runtime Polymorphism.
Quais são as semelhanças entre sobrecarga e substituição em Java?
- Ambos são tipos de polimorfismo.
- Na sobrecarga e sobrescrita, os métodos têm o mesmo nome.
Qual é a diferença entre sobrecarga e substituição em Java?
Artigo Diff meio antes da tabela
Sobrecarga vs. Substituição em Java |
|
Sobrecarregar em Java é a capacidade de criar vários métodos com o mesmo nome com diferentes implementações. | Substituir em Java é fornecer uma implementação específica no método da subclasse para um método já existente na superclasse. |
Parâmetros | |
Na sobrecarga, os métodos têm o mesmo nome, mas um número diferente de parâmetros ou um tipo diferente de parâmetros. | Na substituição, os métodos têm o mesmo nome e os parâmetros devem ser os mesmos. |
Temas | |
A sobrecarga ocorre dentro da classe. | A substituição ocorre dentro das duas classes que têm um relacionamento de herança. |
Sinônimos | |
A sobrecarga é chamada de polimorfismo de tempo compilado. | A substituição é chamada de polimorfismo de tempo de execução. |
Resumo - Sobrecarga vs. Substituição em Java
O polimorfismo é um conceito importante na Programação Orientada a Objetos. Ele fornece a capacidade de um objeto se comportar de várias maneiras. Isso pode sobrecarregar ou anular. Sobrecarregar é o polimorfismo do tempo de compilação e substituir é o polimorfismo do tempo de execução. Eles são úteis no desenvolvimento de aplicativos de software. A diferença entre substituir e sobrecarregar é que Overloading é a capacidade de criar vários métodos do mesmo nome com diferentes implementações e Overriding é fornecer uma implementação específica no método da subclasse para um método já existente na superclasse. É possível implementar tanto a sobrecarga quanto a substituição em Java.
Baixe o PDF Overloading vs Overriding in Java
Você pode baixar a versão PDF deste artigo e usá-la para fins off-line de acordo com a nota de citação. Faça o download da versão em PDF aqui. Diferença entre sobrecarga e substituição em Java