Polimorfismo:
Conceito de orientação a objeto onde um objeto pode ser declarado de várias formas, com isso podemos usar objetos mais abstratos (interfaces), e definirmos os comportamentos em objetos mais concretos (objetos que implementam as interfaces). Cada objeto pode ser atribuido a uma variável de um tipo que não seja o seu, desde que ele implemente, ou extenda aquele objeto:
public interface Login{
public boolean login(String nome, char[] senha);
}
public class LoginSha implements Login{
public boolean login(String nome, char[] senha){
//Implementacao do método em www.github.com/DirceuProfessor
}
public String resetPassword(String nome){
// Implementacão omitida
}
}
public class UsoLogin {
public static void main(String[]args){
// polimorfismo objeto LoginSha atribuido a uma variável do tipo Login
Login login = new LoginSha();
// possível já que a interface login define o método login
login.login("usuario",new char(){'s','e','n','h','a'});
//Erro de compilação já que a interface login não define o método resetPassword
login.resetPassword("usuario");
}
}
No exemplo acima, podemos ver que um objeto do tipo LoginSha é atribuido a um objeto Login, são objetos de tipos diferentes, mas como LoginSha implementa a interface Login, podemos atribuir um objeto LoginSha a uma variável do tipo login.