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…