首页 >Java >java教程 >当默认方法在类中被重写时,如何在 Java 中显式调用默认方法的实现?

当默认方法在类中被重写时,如何在 Java 中显式调用默认方法的实现?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-16 04:34:03696浏览

How do you invoke a default method's implementation explicitly in Java when it's overridden in a class?

在 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中文网其他相关文章!

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