gpt4 book ai didi

interface - Java8覆盖(扩展)默认方法

转载 作者:行者123 更新时间:2023-12-04 16:10:07 24 4
gpt4 key购买 nike

假设我们在一个接口(interface)中有一个默认方法,在实现类中,如果我们需要添加一些额外的逻辑,除了默认方法之外,我们是否必须复制整个方法?是否有可能重用默认方法...就像我们对抽象类所做的那样

super.method()
// then our stuff...

最佳答案

你可以这样调用它:

interface Test {
public default void method() {
System.out.println("Default method called");
}
}

class TestImpl implements Test {
@Override
public void method() {
Test.super.method();
// Class specific logic here.
}
}

这样,您可以通过使用接口(interface)名称限定 super 轻松决定调用哪个接口(interface)默认方法:

class TestImpl implements A, B {
@Override
public void method() {
A.super.method(); // Call interface A method
B.super.method(); // Call interface B method
}
}

这就是 super.method() 不起作用的原因。因为如果类实现多个接口(interface),这将是模棱两可的调用。

关于interface - Java8覆盖(扩展)默认方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28968291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com