La raison réside dans la conception de principe, que java ne permet pas l'héritage multiple. Le problème de l'héritage multiple peut être illustré par l'exemple suivant:
public class A {
public method x() {...}
}
public class B {
public method x() {...}
}
public class C extends A, B { ... }
Maintenant ce qui se passe si vous appelez C. x()? Sera A. x() ou B. x() exécutée? Toutes les langues de l'héritage multiple doit résoudre ce problème.
Les Interfaces permettent en Java une sorte de la restriction de l'héritage multiple. Pour éviter le problème ci-dessus, ils ne sont pas autorisés à avoir des méthodes. Si nous regardons le même problème avec les interfaces et les méthodes statiques:
public interface A {
public static method x() {...}
}
public interface B {
public static method x() {...}
}
public class C implements A, B { ... }
Même problème ici, ce qui se passera si vous appelez C. x()?