假设我们在接口中有一个默认方法, 在实现类中如果我们需要添加一些额外的逻辑,除了默认方法已经我们必须复制整个方法?是否有可能重用默认方法...就像我们使用抽象类
一样super.method()
// then our stuff...
答案 0 :(得分:7)
您可以这样调用它:
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()
无效的情况就是这样。因为如果类实现多个接口,它将是模糊的调用。