Java8重写(扩展)默认方法

时间:2015-03-10 15:55:33

标签: interface java-8 default-method

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

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

1 个答案:

答案 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()无效的情况就是这样。因为如果类实现多个接口,它将是模糊的调用。