Tipos de polimorfismo em Java | Explicado

Tipos de polimorfismo em Java | Explicado
O polimorfismo é uma capacidade que permite que um objeto carregue muitas formas ou em palavras simples que nos permite criar para executar uma única tarefa de várias maneiras. Por exemplo, o polimorfismo nos permite criar vários métodos com o mesmo nome, mas a implementação de cada método será diferente do outro método. Em Java, o conceito de polimorfismo pode ser implementado em tempo de execução ou em tempo de compilação.

Este artigo apresenta uma visão geral completa dos tipos de polimorfismo, conforme listado abaixo:

  • O que é polimorfismo em Java
  • Polimorfismo estático/de tempo de compilação em java
  • Polimorfismo dinâmico/de tempo de execução

Então vamos começar!

O que é polimorfismo em Java

A palavra polimorfismo é uma combinação de duas palavras gregas poli significa muitos e Morphs significa formas, portanto, combinadamente a palavra polimorfismo significa muitos/múltiplos formulários. O polimorfismo nos permite executar uma tarefa específica de várias maneiras

Exemplo

Vamos considerar os exemplos listados abaixo do mundo real para entender o conceito de polimorfismo:

Sons de animais: Rugidos de leão, latidos de cachorro, vizinhos de cavalo e assim por diante.

Agora, vamos entender o conceito acima, em termos de programação Java, neste exemplo, o Animais é uma aula, e "sons()" é o seu método:

Aqui Animais é uma classe geral que não pode ser restrita com apenas um som como um rugido, ou casca, etc. Portanto, uma classe terá uma implementação genérica que pode ser estendida pelas outras classes.

Além disso, Leão, Cachorro, e Cavalo (subclasses) pode estender as propriedades da classe pai Animal. As classes infantis herdarão a função de sua classe pai e podem substituir a implementação dessa função.

Portanto, o polimorfismo em Java permite que você utilize o mesmo método para executar várias funcionalidades. Em Java, o polimorfismo pode ser alcançado por meio de tempo de compilação ou tempo de execução.

Polimorfismo estático/de tempo de compilação em java

No polimorfismo em tempo de compilação, os objetos do CALSS são limitados com os métodos em tempo de compilação. O polimorfismo em tempo de compilação é tratado pelo compilador e suporta o conceito de sobrecarga de método.

A sobrecarga do método no polimorfismo em tempo de compilação permite que uma classe crie vários métodos com o mesmo nome, mas implementações diferentes em termos de parâmetros. E existem algumas regras para esses parâmetros, conforme listado abaixo:

Podemos criar vários métodos com o mesmo nome, mas com uma sequência/ordem diferente de parâmetros.

Podemos criar mais de um método com o mesmo nome, mas com diferentes tipos de dados de parâmetros:

Podemos criar vários métodos com o mesmo nome, mas com um número diferente de parâmetros.

Vamos considerar um exemplo para a profunda compreensão do polimorfismo no tempo de compilação:

Exemplo

Neste exemplo, criamos duas classes:

Multiplicação.Java

O Multiplicação A classe cria três métodos com o mesmo nome "produtos()", O primeiro método leva dois valores inteiros, o segundo leva dois valores duplos e o terceiro leva três valores inteiros:

pacote principal;
classe pública multiplicação
Produto int (int num1, int num2)
retornar num1 * num2;

Produto duplo (Double num1, duplo num2)
retornar num1 * num2;

Produto int (int num1, int num2, int num3)
retornar num1 * num2 * num3;

A captura de tela do código acima é assim:

Principal.Java

Dentro do Principal classe, criamos o objeto da classe de multiplicação e chamamos os três métodos do Multiplicação aula:

pacote principal;
classe pública principal
public static void main (string [] args)
Multiplicação obj = nova multiplicação ();
Sistema.fora.println ("resultado de dois valores int:" + obj.produto (5, 12));
Sistema.fora.println ("resultado de três valores int:" + obj.produto (4, 15, 2));
Sistema.fora.println ("resultado de valores duplos:" + obj.Produto (5.5, 2.67));

O código completo do Principal A classe é mostrada na figura a seguir:

A saída será assim:

Da saída acima, observamos que:

Quando passamos pelos dois int valores então o produtos método com dois int Parâmetros são executados.

Quando passamos pelos três int valores então o produtos método com três int Parâmetros são executados.

Da mesma forma, quando passamos pelos dois dobro valores então o produtos método com dois dobro Parâmetros são executados.

Polimorfismo dinâmico/de tempo de execução

Em tempo de execução Polimorfismo, os objetos são delimitados com os métodos em tempo de execução (ligação dinâmica). O polimorfismo dinâmico ou de tempo de execução apóia o conceito de Método substituindo.

  • Na OOP, o termo substituindo refere -se a substituir as funcionalidades dos métodos existentes.
  • No polimorfismo de tempo de execução, o tipo e a lista do parâmetro devem ser os mesmos no método substituído.
  • O tipo de retorno do método deve ser o mesmo na superclasse e na subclasse.
  • Uma classe dos pais com um método declarado com final, privado ou estático não pode ser substituído na subclasse, no entanto, um método estático pode ser redecarcado na classe infantil.

Vamos dar uma olhada no exemplo abaixo para o profundo entendimento do polimorfismo de tempo de execução.

Exemplo

O trecho de código abaixo cria três classes: Pessoa, funcionário, e Departamento, o Pessoa A classe é uma classe pai, a Funcionário A classe se estende Pessoa classe e Departamento A classe entra Funcionário aula.

classe de classe
public void print ()
Sistema.fora.println ("Esta é uma classe de pessoa");


classe funcionário estende a pessoa
public void print ()
Sistema.fora.println ("Esta é uma classe de funcionários");


Departamento de classe estende o funcionário
public void print ()
Sistema.fora.println ("Esta aula de departamento");


classe pública RunTimeExample
public static void main (string [] args)
Pessoa por = nova pessoa ();
Pessoa emp = new funcionário ();
Departamento de pessoa = novo departamento ();
por.imprimir();
Emp.imprimir();
Departamento.imprimir();

As aulas infantis estende o imprimir() método de suas classes pais e eles também têm sua própria implementação desse método print (). E dentro do método principal, criamos o objeto de cada classe e chamamos o imprimir() método com o respectivo objeto de classe. O código e saída completos são fornecidos na captura de tela a seguir:

A saída acima verifica que, quando chamamos as funções de impressão com cada objeto de classe infantil, eles substituem a implementação da função Print Print ().

Conclusão

O polimorfismo nos permite criar vários métodos com o mesmo nome, mas com diferentes implementações nas classes de pais e filhos. Pode ser alcançado em tempo de compilação, que suporta o conceito de sobrecarga de métodos ou em tempo de execução, que suporta o conceito de substituir. Este artigo apresenta uma visão geral detalhada do tempo de execução e do polimorfismo no tempo de compilação e explica o que é o polimorfismo, seus tipos e regras para implementar cada tipo.