Vídeo: Curso POO Teoria #12a - Conceito Polimorfismo (Parte 1) 2024
O polimorfismo é um termo fantasioso da ciência da computação que se refere à capacidade de Java de usar variáveis de classe base para se referir a objetos de subclasse, acompanhar a subclasse a que um objeto pertence, e use métodos substituídos da subclasse mesmo que a subclasse não seja conhecida quando o programa é compilado.
Whew! Isso é um bocado. O que isso resume é que sempre que um parâmetro chama um tipo específico, você pode usar um objeto criado a partir de uma subclasse desse tipo.
Por exemplo, suponha que você esteja desenvolvendo um aplicativo que possa reproduzir o venerável jogo Tic-Tac-Toe e você crie uma classe chamada Player que represente um dos jogadores. Esta classe possui um método público chamado mover que retorna um int para indicar qual quadrado do quadro que o jogador deseja marcar.
Para manter as coisas simples, o método de movimento escolhe cegamente o primeiro quadrado vazio no quadro como seu movimento. Essa é, é claro, uma estratégia terrível para ganhar no Tic-Tac-Toe. Portanto, você decide criar uma versão melhor da classe, chamada BetterPlayer. Você implementa a classe BetterPlayer como uma subclasse da classe Player, mas substitui o método de movimento para que a classe BetterPlayer faça movimentos mais inteligentes do que a classe Player.
Suponha que você também escreveu um método chamado MakeAMove na classe principal para o aplicativo Tic-Tac-Toe (chamado TicTacToe). O método MakeAMove parece algo como isto:
public void MakeAMove (Player p) {int i = p. mover(); retornar i;}
Você poderia chamar o método MakeAMove assim:
int m = MakeAMove (novo Player ());
Neste caso, o método MakeAMove retornará o primeiro quadrado vazio na placa.
Mas suponha que você ligue assim:
int m = MakeAMove (novo BetterPlayer ());
Neste caso, o método MakeAMove retornará um melhor movimento de reflexão porque a classe BetterPlayer usa um algoritmo melhor para determinar o próximo movimento do jogador.