在 Java 中显式调用默认方法
Java 8 引入了默认方法作为扩展接口而不破坏现有实现的一种方式。但是,当方法的默认实现被重写或与其他默认实现冲突时,如何调用该方法的默认实现?
在提供的代码中,foo() 方法被定义为 A 接口中的默认方法并被重写在B类中。要访问 B 类中 A.foo() 的默认实现,您可以使用以下语法:
A.super.foo();
这允许您调用默认实现,即使它已被覆盖。需要注意的是,A.super引用指的是A接口类型,而不是B类对象。
public class ChildClass implements A, C { @Override public void foo() { // Override the default implementation System.out.println("ChildClass.foo()"); } public void callDefault() { // Invoke the A.foo() default implementation A.super.foo(); // Invoke the C.foo() default implementation C.super.foo(); } }
在这个例子中,ChildClass同时实现了A和C接口,每个接口都有自己的默认 foo() 方法。通过使用 A.super.foo() 和 C.super.foo(),可以显式访问默认实现,从而允许特定行为或冲突解决。
以上是当默认方法在类中被重写时,如何在 Java 中显式调用默认方法的实现?的详细内容。更多信息请关注PHP中文网其他相关文章!