Polimorfismo: Mecanismo de herança que permite a criação de classes a partir de outras já existentes com relações é-um-tipo-de, de forrma que, a partir de uma classe genérica, classes mais especializadas possam ser criadas.
Permite a manipulação de instâncias de classes que herdam de uma mesma classe ancestral de forma unificada: podemos escrever métodos que recebam instâncias de uma classe C, e os mesmos métodos serão capazes de processar instâncias de qualquer classe que herde da classe C, já que qualquer classe que herde C é-um-tipo de C.
Fonte: https://books.google.com.br/books?id=2pfpCgAAQBAJ&pg=PT5&dq=java+livro&hl=pt-BR&sa=X&ved=0ahUKEwjS_JXyq7zQAhVCTCYKHWJNBxQQ6AEIUTAF#v=onepage&q=polimorfismo&f=false
Diferentes formas == polimorfismo. Ha 4 tipos dele:
1- polimofrismo de inclusão- ou puro, é aquele que torna mais facil incluir novos tipos de comportamento.
2- polimorfismo paramétrico - habilitado pelo generics em java, permite que um identificador seja somente especificado durante execução, semelhante a weakly typed languages. exemplo:
public class copier {
public void copy(T a[], T b[], int n){
for (int i = 0; i < n; i++) //percebe que o tipo do parametros se tornaram 'T', sem definição até que uma classe o utilize
a[i] = b[i];
}
}
3- overriding - usa classe abstrato que força as classes derivadas a terem suas proprioas implementações
4- overloading - varios metodos com mesmo nome para admitir paratmetros diversos.