首页  >  文章  >  Java  >  当重写或冲突时如何调用 Java 中的默认方法?

当重写或冲突时如何调用 Java 中的默认方法?

Patricia Arquette
Patricia Arquette原创
2024-11-17 18:36:02836浏览

How to Call Default Methods in Java When Overridden or Conflicting?

在Java中调用默认方法

问题:

是否可以调用默认方法当方法被覆盖或与多个接口中的实现冲突时,该方法的实现如何?考虑以下代码:

interface A {
    default void foo() {
        System.out.println("A.foo");
    }
}

class B implements A {
    @Override
    public void foo() {
        System.out.println("B.foo");
    }
    public void afoo() {
        // How to invoke A.foo() here?
    }
}

答案:

默认方法 A.foo() 可以使用语法 A.super.foo() 显式调用。此语法允许您访问该方法的原始实现,即使该方法已被覆盖或由于冲突而不可用。

示例:

要调用 A.从 B 类中的方法 afoo() 中调用 foo(),可以使用以下代码:

public void afoo() {
    A.super.foo();
}

额外使用:

super 语法也可以是用于从其他接口访问默认方法。例如,如果接口 C 也有一个默认方法 foo(),则可以按如下方式访问类 B 中的两个实现:

public void bah() {
    A.super.foo(); // Original `foo()` from interface `A`
    C.super.foo(); // Original `foo()` from interface `C`
}

通过使用 super 语法,您可以有选择地选择要调用哪个默认实现或者在您自己的方法中组合多个实现。

以上是当重写或冲突时如何调用 Java 中的默认方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn