Java 9新特性 - (1)接口中的私有方法
Java 9新特性 - (1)接口中的私有方法
June 18, 2021
在Java 7或更早版本中,一个接口中只能定义如下两种:
- 常量
- 抽象方法
在Java 8中接口引入了默认方法和静态方法。可以在接口中编写方法实现,仅仅需要使用default
关键字来定义它们。
Java 9提供了新的功能,可以在接口中使用private
关键字定义私有方法和私有静态方法,这些私有方法的作用是用于改善接口内部的代码可重用性。例如,如果需要两个默认方法来共享代码,则私有接口方法将允许它们共享代码,但不将该私有方法暴露给它的实现类调用。
截止至Java 9,一个接口中能定义如下几种:
- 常量 (Java 7及以前版本支持)
- 抽象方法 (Java 7及以前版本支持)
- 默认方法 (Java 8+)
- 静态方法 (Java 8+)
- 私有方法 (Java 9+)
- 私有静态方法 (Java 9+)
可以使用private
访问修饰符在接口中编写私有方法。在接口中使用私有方法有四个规则:
- 接口中private方法不能是abstract抽象方法。因为abstract抽象方法是公开的用于给接口实现类实现的方法,所以不能是private。
- 接口中私有方法只能在接口内部的方法里面被调用。
- 接口中私有静态方法可以在其他静态和非静态接口方法中使用。
- 接口中私有非静态方法不能在私有静态方法内部使用。
interface CustomInterface {
public abstract void abstractMethod(); //抽象方法不能是私有的
public default void defaultMethod() {
privateMethod(); //可以调用接口中的私有方法
privateStaticMethod(); //可以调用接口中的私有静态方法
System.out.println("普通方法被调用");
}
public static void staticMethod() {
privateStaticMethod(); //public静态方法可以调用private静态方法
System.out.println("静态方法被调用");
}
private void privateMethod() {
System.out.println("private私有方法被调用");
}
private static void privateStaticMethod() {
System.out.println("private私有静态方法被调用");
}
}
参考:
最后更新于