覆盖子接口方法

Overriding subinterface methods

是否有任何可表示的示例可以用来覆盖子接口方法?看下面的例子:

public class TestOverridingSubinterfaceMethods {

    @Test
    public void testOverrideSubinterfaceMethod() throws Exception {
        assertThat(new I2Impl().foo(), is(2));

    }

    private class I2Impl implements I2 {
        @Override
        public Integer foo() {
            return 2;
        }
    }

    private interface I1 {
        Integer foo();
    }

    private interface I2 extends I1 {
        Integer foo();
    }

}

如果 I1I2 都没有实现 foo()(我们知道它们在 Java 8 之前的版本中没有),它不会I2 再次声明 foo() 没有意义。它相当于 I2 只是一个扩展 I1.

的空接口

然而,在 Java8 中,有默认方法,允许您为接口方法提供默认实现。您可以在 I1 中有一个 foo() 的默认实现,在 I2 中有一个不同的 foo() 默认实现。在那种情况下,I2foo() 覆盖 I1foo().

可能是有意义的