Tudo bem quando você tem controle total sobre todo o código em questão e pode implementar isso antecipadamente. Agora imagine que você tem uma classe pública existente usada em muitos lugares com um método
public class MyClass{
private String name;
MyClass(String name){
this.name = name;
}
public String getName(){
return name;
}
}
Agora você precisa passá-lo para o WizzBangProcessor de prateleira, que requer classes para implementar a WBPInterface ... que também tem um método getName (), mas em vez de sua implementação concreta, esta interface espera que o método retorne o nome de um tipo do processamento Wizz Bang.
Em C # seria um trvial
public class MyClass : WBPInterface{
private String name;
String WBPInterface.getName(){
return "MyWizzBangProcessor";
}
MyClass(String name){
this.name = name;
}
public String getName(){
return name;
}
}
Em Java Tough, você terá que identificar cada ponto na base de código implementado existente onde você precisa converter de uma interface para outra. Claro, a empresa WizzBangProcessor deveria ter usado getWizzBangProcessName (), mas eles também são desenvolvedores. Em seu contexto, getName estava bem. Na verdade, fora do Java, a maioria das outras linguagens baseadas em OO suportam isso. Java é raro em forçar todas as interfaces a serem implementadas com o mesmo método NAME.
A maioria das outras linguagens tem um compilador que fica mais do que feliz em receber uma instrução para dizer "este método nesta classe que corresponde à assinatura deste método nesta interface implementada é a sua implementação". Afinal, o objetivo da definição de interfaces é permitir que a definição seja abstraída da implementação. (Nem me fale sobre como ter métodos padrão em Interfaces em Java, muito menos sobreposição padrão ... porque com certeza, cada componente projetado para um carro de estrada deve ser capaz de bater em um carro voador e apenas funcionar - ei ambos são carros ... Tenho certeza que a funcionalidade padrão de digamos que seu navegador por satélite não será afetado com as entradas padrão de pitch e roll, porque os carros apenas guinam!