Java 9 中接口方法的默认访问修饰符?

问题描述 投票:0回答:3

Java 9 允许我们在接口中拥有

private
方法,这意味着不显式标记
public
方法不再是多余的。

但是,现在强制这样做吗?我希望规范仍然假设

public abstract
作为方法的默认修饰符,以保持与早期源代码的向后兼容性?

java interface java-9
3个回答
14
投票

Java 9 语言规范在 §9.4::

中有说明

接口主体中的方法可以声明为

public
private
(第 6.6 节)。如果没有给出访问修饰符,则该方法是隐式的
public
。允许为接口中的方法声明多余地指定
public
修饰符,但出于风格原因,不鼓励这样做。

不幸的是,我找不到不指向 PDF 的链接,比较新旧 JLS


2
投票

我所学到的:

接口中的所有成员都是隐式公共的并且不能被声明 与任何其他访问修饰符一起使用,除非下面指定:

  • 字段和所有变量都是隐式公共静态最终
  • 方法签名、默认方法(从 Java 8 开始允许)使用“default”修饰符声明。
  • 静态方法(从 Java 8 开始允许)
  • 私有方法(从 Java 9 开始允许)静态和非静态具体方法都可以是私有的。
  • 嵌套类型。
  • 方法体仅存在于默认方法、私有方法和静态方法中。

来源:Tim Buschalka 的学习编程学院

还有一个非常清晰但有点长的解释:https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html


0
投票

Java 9v 及以上: 内部接口

  1. 私有静态方法和
  2. 允许使用私有非静态方法。

示例:

界面示例{

私有静态 void m1(){}

私有 void m2(){}

私有 void m3(){}

}

© www.soinside.com 2019 - 2024. All rights reserved.