Todo está bien cuando tienes control total sobre todo el código en cuestión y puedes implementarlo por adelantado. Ahora imagine que tiene una clase pública existente que se utiliza en muchos lugares con un método
public class MyClass{
private String name;
MyClass(String name){
this.name = name;
}
public String getName(){
return name;
}
}
Ahora debe pasarlo al WizzBangProcessor estándar que requiere clases para implementar la WBPInterface ... que también tiene un método getName (), pero en lugar de su implementación concreta, esta interfaz espera que el método devuelva el nombre de un tipo del procesamiento de Wizz Bang.
En C # sería un truco
public class MyClass : WBPInterface{
private String name;
String WBPInterface.getName(){
return "MyWizzBangProcessor";
}
MyClass(String name){
this.name = name;
}
public String getName(){
return name;
}
}
En Java Tough, tendrá que identificar todos los puntos de la base de código implementado existente donde necesita convertir de una interfaz a otra. Seguro que la empresa WizzBangProcessor debería haber utilizado getWizzBangProcessName (), pero también son desarrolladores. En su contexto, getName estaba bien. En realidad, fuera de Java, la mayoría de los otros lenguajes basados en OO admiten esto. Java es raro en forzar que todas las interfaces se implementen con el mismo método NAME.
La mayoría de los otros lenguajes tienen un compilador que está más que feliz de tomar una instrucción para decir "este método en esta clase que coincide con la firma de este método en esta interfaz implementada es su implementación". Después de todo, el objetivo de definir interfaces es permitir que la definición se abstraiga de la implementación. (Ni siquiera me hagas empezar a tener métodos predeterminados en interfaces en Java, y mucho menos anulación predeterminada ... porque seguro, todos los componentes diseñados para un automóvil de carretera deberían poder chocar contra un automóvil volador y simplemente funcionar, oye Ambos son automóviles ... Estoy seguro de que la funcionalidad predeterminada de, digamos, su navegador por satélite no se verá afectada con las entradas de cabeceo y balanceo predeterminadas, ¡porque los automóviles solo giran!