假设我们在接口中有一个默认方法,在实现类时,如果我们需要在默认方法之外添加一些额外的逻辑,我们是否必须复制整个方法?有没有可能重用默认方法......就像我们对抽象类所做的那样
super.method()
// then our stuff...
假设我们在接口中有一个默认方法,在实现类时,如果我们需要在默认方法之外添加一些额外的逻辑,我们是否必须复制整个方法?有没有可能重用默认方法......就像我们对抽象类所做的那样
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.
}
}
这样,您可以通过限定super
接口名称轻松决定调用哪个接口默认方法:
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()
行不通的原因。因为如果类实现多个接口,这将是模棱两可的调用。