Java

Polimorfismo em Java

Na programação orientada a objetos, o polimorfismo em Java permite que referências de tipos de classes mais abstratas representem o comportamento das classes concretas que referenciam.

Assim, é possível tratar vários tipos de maneira homogênea (através da interface do tipo mais abstrato). O termo polimorfismo é originário do grego e significa “muitas formas” (poli = muitas, morphos = formas).

O polimorfismo é caracterizado quando duas ou mais classes distintas tem métodos de mesmo nome, de forma que uma função possa utilizar um objeto de qualquer uma das classes polimórficas, sem necessidade de tratar de forma diferenciada conforme a classe do objeto.

Uma das formas de implementar o polimorfismo é através de uma classe abstrata, cujos métodos são declarados mas não são definidos, e através de classes que herdam os métodos desta classe abstrata:

public abstract class OperacaoMatematica {
	
   public abstract double calcular(double x, double y); 
}

Esta é uma classe abstrata que representa qualquer operação matemática. Podemos imaginar diversas operações que se encaixam na sua interface, como soma, subtração, multiplicação ou divisão, entre outras.

Note que, mesmo que a natureza do cálculo mude, a semântica do método calcular não muda, ou seja, ele sempre calculará o resultado da operação matemática que está sendo trabalhada.

Definamos então, duas subclasses, Soma e Subtracao, que implementam a classe OperacaoMatematica:

public class Soma extends OperacaoMatematica {
	
   public double calcular(double x, double y) {
		
	return x + y; 
   } 
} 
    
public class Sustracao extends OperacaoMatematica {
	
   public double calcular(double x, double y) {
		
	return x - y; 
   } 
}

O seguinte trecho de código demonstra o uso do polimorfismo:

public class Contas {
	
   public static void mostrarCalculo(OperacaoMatematica operacao, double x, double y) {
		
	System.out.println("O resultado é: " + operacao.calcular(x, y));   
   }
     
   public static void main(String args[]) {
		
      //primeiro calculamos uma soma
      Contas.mostrarCalculo(new Soma(), 5, 5); // imprime o resultado é: 10
      
     //depois uma subtração
     Contas.mostrarCalculo(new Subtracao(), 5, 5); // imprime o resultado é: 0
   }            
}

Embora o método calcular tenha sido chamado duas vezes no interior de mostrarCalculo, os tipos (isto é, as classes das instâncias) utilizados como parâmetros eram diferentes.

De fato, o comportamento de cada tipo era exatamente oposto.

É comum definir sobrecarga de métodos ou simplesmente sobrecarga como uma forma de polimorfismo (chamado de polimorfismo ad-hoc).

Nesse caso, implementa-se métodos com um mesmo nome, mudando apenas a lista de parâmetros que ele recebe. 

DOMINE O JAVA WEB ATRAVÉS DE AULAS PASSO A PASSO, DO BÁSICO AO AVANÇADO!

Domine as boas práticas com projetos práticos que vão te ajudar a desenvolver sistemas e se destacar no mercado de programação.

Clique na imagem abaixo e conheça mais detalhes do nosso curso:

Link do curso: https://go.hotmart.com/S90628636G?src=siteCB

Tratamento de exceção em Java

Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Bene Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *