接口变量默认为final和static,方法是public和abstract

sap*_*sap 4 java

问题是为什么决定将变量作为final和static,并将方法默认为public和abstract.

是否有任何特殊原因使它们成为隐式,变量为final和static,方法为public和abstract.

为什么他们不允许静态方法但允许静态变量?

我们在Java中具有多重继承功能的接口,以避免钻石问题.但它如何解决钻石问题,因为它不允许静态方法.

在下面的程序中,两个接口都有相同名称的方法..但是实现只有一个我们实现...这是钻石问题的解决方法吗?

interface testInt {
    int m = 0;
    void testMethod();
}

interface testInt1 {
    int m = 10;
    void testMethod();
}

public class interfaceCheck implements testInt, testInt1{
        public void testMethod() {
            System . out . println ( "m is"+ testInt.m );   
             System . out . println ( "Hi World!" );    
        }
}
Run Code Online (Sandbox Code Playgroud)

Eya*_*der 5

在我看来,一个接口声明了一组实现者必须具备的能力.它指的是"什么"而不是"如何"; 它更像是一个规范,而不是一个实现指南.

因此,非公开的方法在接口中是无关紧要的.与非静态数据成员相同,后者与特定实现更相关.