接口的静态和最终字段的含义

arj*_*soh 0 java static final interface

接口与抽象类的问题和接受的答案的刺激下,我希望得到一个更详细和澄清的答案.特别是我无法理解语句"接口中的字段是隐式静态和最终的".这是否意味着实现包含方法foo()的接口的类A可以调用该方法A.foo()

关于final的内容:只要接口只包含方法,给定一个实现带方法接口的抽象类A foo()class B扩展它的普通接口abstract class A,不能class B覆盖foo方法吗?就我而言,最终的方法是不可能被覆盖的.最后真的是什么?

Pet*_*rey 7

"接口中的字段是隐式静态和最终的".

在界面写作

int N = 1;
public int N = 1;
static int N = 1;
public static int N = 1;
// also
final int N = 1;
public final int N = 1;
static final int N = 1;
public static final int N = 1;
Run Code Online (Sandbox Code Playgroud)

都是一样的.

这是否意味着实现包含方法foo()的接口的类A可以调用该方法作为A.foo()

字段和方法都是成员,但方法和字段不是一回事.

接口中的方法不能是,static或者final是隐式公共和抽象的

int foo();
public int foo();
abstract int foo();
public abstract int foo();
Run Code Online (Sandbox Code Playgroud)

对于一个接口都是一样的.

就我而言,最终的方法是不可能被覆盖的

无法覆盖最终实例方法,并且无法隐藏最终的静态方法.

类似地,嵌套的接口,类和注释是公共的和静态的.嵌套接口和注释也是隐式抽象的.

interface A {
    public static class C { }
    public static /* final */ enum E {; }
    public static abstract interface I { }
    public static abstract @interface A { }
}
Run Code Online (Sandbox Code Playgroud)