que tienen un punto más para demostrar por qué métodos de interfaz no pueden ser estáticos:
interface MyInterface {
static void myStaticMethod();
}
Ahora vamos a tener dos clases están implementando "MyInterface"
// primera clase
class MyClass1 implements MyInterface {
static void myStaticMethod(){
// some implementation
}
}
// segunda clase
class MyClass2 implements MyInterface {
static void myStaticMethod(){
// some implementation
}
}
Ahora estoy instanciando como a continuación:
1- MyInterface myObj1 = new MyClass1(); 2- myObj1.myStaticMethod();
3- MyInterface myObj2 = new MyClass2(); 4- myObj2.myStaticMethod();
// aquí en la línea 2 & 4, que es llamada equivocada como myStaticMethod debería ser llamado usando nombre de la clase (porque myStaticMethod se define como estática), como a continuación:
MyInterface.myStaticMethod(); -> Pero en este caso, cómo llamar a diferentes implementaciones de myStaticMethod() por MyClass1 & clases MyClass2.
Por lo tanto, se ha demostrado que no es posible aplicar estática en la declaración del método de interfaz.
Para el final, está bastante claro que va a optar por anular la funcionalidad.
pregunta duplicada –