Polimorfismo em Java
Polimorfismo é um termo de ciência da computação de fantasia que se refere à capacidade de Java para usar variáveis de base de classe para se referir a objetos de subclasse, manter o controle de qual subclasse um objeto pertence, e usar métodos de substituição da subclasse mesmo que a subclasse não é conhecida quando o programa é compilado.
Ufa! Isso é um bocado. O que ferve para baixo é que, sempre que um parâmetro chama para um determinado tipo, você pode usar um objeto criado a partir de uma subclasse desse tipo em seu lugar.
Por exemplo, suponha que você está desenvolvendo um aplicativo que pode jogar o jogo venerável Tic-Tac-Toe, e você criar uma classe chamada Jogador que representa um dos jogadores. Esta classe tem uma público método denominado mover que retorna um int para indicar qual a casa do tabuleiro o jogador quer marcar.
Para manter as coisas simples, o mover método cegamente escolhe o primeiro quadrado vazio na placa como o seu movimento. Isto é, naturalmente, uma estratégia terrível para ganhar em Tic-Tac-Toe. Portanto, você decidir criar uma versão melhor da classe, chamado BetterPlayer. Você implementar o BetterPlayer classe como uma subclasse da Jogador classe, mas substituir o mover Método de modo que o BetterPlayer classe faz movimentos mais inteligente que o Jogador classe.
Suponha que você também tenha escrito um método chamado Fazer um movimento na classe principal para o aplicativo Tic-Tac-Toe (chamou-lhe Jogo da velha). o Fazer um movimento método é algo como isto:
MakeAMove public void (p Player) {int i = p.move () - retornar i-}
Você poderia chamar o Fazer um movimento método como este:
int m = MakeAMove (nova Player ()) -
Neste caso, o Fazer um movimento método irá retornar o primeiro quadrado vazio no tabuleiro.
Mas suponha que você chamá-lo assim:
int m = MakeAMove (nova BetterPlayer ()) -
Neste caso, o Fazer um movimento método retornará um melhor pensamento-out movimento porque o BetterPlayer classe usa um algoritmo melhor para determinar o próximo movimento do jogador.