3

在 java 8 中,默认方法实现可以同时使用publicdefault修饰符。以下两种方法之间的主要区别是什么。在什么条件下需要遵循哪种类型。

default int makeMul(int x, int y) {
    return x * y;
}

public default int makeMul(int x, int y) {
    return x * y;
}
4

2 回答 2

9

这里的默认方法没有什么特别之处。Java 一直允许将接口方法声明为公共的,即使它们已经隐式公开。

JLS 9.4开始:

接口主体中的每个方法声明都是隐式公共的(第 6.6 节)。允许但不鼓励在接口中为方法声明冗余地指定 public 修饰符。

于 2016-05-11T06:30:45.157 回答
3

正如其他人所建议的那样,该default关键字有两个主要用途:

  • 在 Java 8 之前,它只能用于触发switch-case语句中的默认情况。
  • 从 Java 8 开始,开发人员可以在接口内部提供已实现的方法(这在以前是不可能的),default在方法的声明中使用关键字 ( public default int method())。

据我了解,在简单的类default中使用方法声明中的关键字根本没有任何区别。

default有关接口中方法用途的广泛讨论,请参阅Java 8 中的 Default 或 Defender 方法的用途

于 2016-05-11T06:42:12.810 回答