jdk 9 允许在接口中定义私有方法,用于抽取多个默认方法或静态方法中的公共逻辑。使用方式是直接在接口内部用 private 关键字声明方法体,其他非私有方法通过调用该私有方法来复用代码。

接口中如何定义和调用私有方法
在接口中定义私有方法时,必须提供完整的方法实现(即包含方法体),且该方法只能被同一个接口内的其他方法访问。调用方式与普通方法调用一致,直接通过方法名加参数列表即可。私有方法不能被子类、实现类或其他包中的类访问,这保证了封装性。

public interface MyInterface {
default void publicMethod() {
helper();
System.out.println("Public method executed.");
}
private void helper() {
System.out.println("Private helper logic.");
}
}上述代码中,publicMethod 是默认方法,它调用了同接口的私有方法 helper。编译并实现该接口后,调用 publicMethod 会先执行私有方法的输出,再执行默认方法的后续逻辑。私有方法 helper 无法在实现类中直接调用,否则会导致编译错误。
立即学习“Java免费学习笔记(深入)”;
掌握 ES6+ 特性,包括 async/await、解构、扩展运算符、箭头函数、Promise、模块、迭代器、生成器以及函数式编程模式,编写简洁高效的 Java
私有方法能否被静态方法调用
接口中的私有方法可以被静态方法调用,前提是静态方法与私有方法位于同一个接口内。静态方法同样可以通过方法名直接调用私有方法,这与默认方法的调用规则一致。这种设计允许在接口内部统一处理静态逻辑和实例逻辑的公共部分。

public interface MyInterface {
static void staticMethod() {
helper();
System.out.println("Static method executed.");
}
private void helper() {
System.out.println("Private helper logic.");
}
}在上述代码中,静态方法 staticMethod 调用了私有方法 helper。由于静态方法属于接口本身而非实例,调用时无需创建实现类对象,直接使用 MyInterface.staticMethod() 即可触发私有方法的执行。私有方法在此场景下依然保持不可见性,外部类无法访问。
私有方法是否支持重载
接口中的私有方法支持重载,只要方法签名不同(参数类型、数量或顺序不同)即可。重载的私有方法可以在同一接口内被其他方法根据参数匹配调用。这一特性与类中的私有方法重载行为一致,提供了灵活的代码复用能力。

















