https://youtu.be/ly2yxNxjKDc

Em seu nível básico, um polimorfismo é parte da teoria matemática dos tipos. Na ciência da computação, um objeto polimórfico é um objeto que pode assumir várias formas.

De outra forma, polimorfismo é uma característica das linguagens orientadas a objetos que permite que um programa processe objetos diferentemente dependendo dos tipos de dados ou classe.

Existem diferentes tipos de polimorfismo, estudaremos nesta aula os seguintes:

  1. Ad hoc (Estático/Tempo de compilação)
  2. Subtyping (Dinâmico)

No caso de polimorfismo, é necessário que os métodos tenham exatamente a mesma identificação, sendo utilizado o mecanismo de redefinição de métodos.

Nesta aula estudaremos o tipo Ad hoc.

Ad hoc

Polimorfismo ad-hoc refere-se à ideia de que uma função específica pode ser aplicada a argumentos diferentes e pode operar de forma diferente dependendo do tipo de argumentos aos quais é aplicada.

Veja o exemplo:

public class Operations {

    public void operate(int op){
        System.out.println("Operating int...");
    }

    public void operate(String op){
        System.out.println("Operating String...");
    }

    public void operate(int op1, int op2){
        System.out.println("Operating two arguments int...");
    }

    public static void main(String[] args) {
        Operations operations = new Operations();
        operations.operate(1);
        operations.operate("operating...");
        operations.operate(10, 20);
    }

}