Tipo monomórfico - Uma variável String só recebe um tipo: String;
Variável polimórfica: Variável aceita qualquer tipo;
Função polimórfica quando seus operandos(parâmetros atuais) podem ter mais do que um tipo;
Polimorfismo faz com que o programador não se preocupe com os tipos, porém dificulta a implementação de uma boa interface.
Polimorfismo tem a vantagem de se evitar criar várias códigos para cada tipo de utilidade. Cria-se uma função que serve para cada vários tipos.
Tipos simples(primitivos) não são objetos, eles precisam ser empacotados pelas classes Wrappers.
Exemplo:
int i=10;
Integer iwrap = new Integer(i);
myCollection.add(iwrap);
Integer element = (Integer) myCollection.get(0);
int value = elemente.intValue();
Empacotadores
Coleções
Nota:
-Todas as coleções são polimórficas.
-Os elementos são do tipo Object.
Exemplo:
public void add(Object element)
public Object get(int index)
Polimórficas
Casting
Tipos
Coerção
Nota:
Proporciona um meio de contornar a rigidez de tipos monomórficos.
Ex:
Int num = 2.6;
num == 2;
Num é reduzido a 2. Sua parte decimal é ignorada.
Sobrecarga
Nota:
Método de mesmo nome com os mesmos parâmetros. Uso dele é entendido de acordo com os parâmetros passados.
Paramétrico
Nota:
Único método é codificado e ele trabalhará uniformemente num intervalo de tipos.
Métodos paramétricos são também chamados de métodos genéricos.
Exemplo: ArrayList<Tipo>;
ArrayList vai ser criado de acordo com o tipo de parâmetro passado.
ArrayList de Objetos, de String ...
Classe genérica pode ser escrita independente do tipo dos itens armazenados.
Inclusão
Nota:
Instancio a variável com o construtor do subTipo.
Vehicle veiculo;veiculo = new Car();