Interface e Polimorfismo

Qual o principal objetivo da mesma ? :shock: :shock:

Pelo que entendi seria:

Em subclasses de Pais diferentes que aplicam a mesma interface utilizármos um mesmo método que seria escolhido pelo compilador em tempo de execução, sem claro criar um vínculo entre as classes ou duplicar código, seria isso mesmo? :? :? :? :? :?

São duas coisas distintas interface e polimorfismo - embora parentes.


Polimorfismo é a capacidade de uma mesma chamada a X() chamar diferentes métodos em tempo de execução. Por exemplo, vc tem a classe A e B. Ambas tem um método chamado ‘novoMetodo()’


Object misterio = new A(); 
misterio.novoMetodo();   // chama novoMetodo de A

misterio = new B();
misterio.novoMetodo();  //chama novoMetodo de B

As linguagens OO possuem facilidades para garantir o polimorfismo.


Interface é uma espécie de ‘gabarito’; quando uma classe implementa uma interface, vc GARANTE que a classe contém TODOS os métodos que estão ditos na interface.

Exemplo, eu crio uma interface I que definem os métodos X, Y e Z. Sempre que uma classe implementar a interface I, ela OBRIGATORIAMENTE tem que implementar os métodos X, Y e Z.

Uma interface garante o polimorfismo das classes que o implementam. Isto é, não vai ter erro em tempo de execução porque um maluco que esqueceu de implementar o método.

Uma outra maneira de garantir o polimorfismo é por meio de herança.

Bem no fim das contas, estender uma classe ou implementar uma interface dá quase na mesma…