java - 接口(interface)的静态字段和最终字段的含义

标签 java interface static final

受到问题Interface vs Abstract Classes的刺激和接受的答案,我想有一个更详细和澄清的答案。特别是我无法理解“接口(interface)中的字段是隐式静态和最终的”这句话。这是否意味着实现包含方法 foo() 的接口(interface)的类 A 可以调用该方法作为 A.foo()

关于final:只要接口(interface)只包含方法,给定一个抽象类A,它实现一个带有方法foo()的接口(interface),以及一个普通的类B,扩展抽象类A类B不能重写foo方法吗?就我而言,final 方法是不可能被重写的。最终什么是真的?

最佳答案

"a field in an interface is implicitly static and final".

在界面中编写

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;

都是一样的。

Does it mean that a class A implementing an interface containing method foo() can invoke the method as A.foo()

字段和方法都是成员,但方法和字段不是同一件事。

接口(interface)中的方法不能是staticfinal,但必须是隐式公共(public)和抽象的

int foo();
public int foo();
abstract int foo();
public abstract int foo();

对于接口(interface)来说都是相同的。

As far as I am concerned, final methods are impossible to be overridden

最终实例方法不能被覆盖,最终静态方法不能被隐藏。

类似地,嵌套接口(interface)、类和注释都是公共(public)的和静态的。嵌套接口(interface)和注释也是隐式抽象的。

interface A {
    public static class C { }
    public static /* final */ enum E {; }
    public static abstract interface I { }
    public static abstract @interface A { }
}

关于java - 接口(interface)的静态字段和最终字段的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12216480/

相关文章:

java - 当您在 Java 中实现接口(interface)时,它是显式的还是隐式的?

C# - 需要基类上的接口(interface),但只需要派生类中的实现

go - 如何避免为类似的 golang 结构重新实现 sort.Interface

java - 根据共享首选项设置 ImageView 的可见性

java - 如何在 Scala 中将案例类转换为 Json-LD?

python - 通过 apache 提供静态文件

java - 变量不会增加,从静态方法调用非静态方法

javascript - 如何在 Google 脚本中将公式设置为值?

带有代理的 Java websocket

java - 检查文件/目录是否存在而不创建新的 File 对象