【问题标题】:What is the reason behind overriding a method/methods of an interface in the sub interface?在子接口中覆盖接口的方法/方法的原因是什么?
【发布时间】:2017-08-30 06:18:18
【问题描述】:

在子接口中重写接口的方法/方法背后的原因是什么?

例如

interface I{ public void method();}
interface I2 extends I{@Override public void method();}

【问题讨论】:

  • 如果这是您的问题,您不必这样做?
  • 你得问 I2 的作者。当您使用它时,询问为什么它有如此可怕的无意义名称,为什么它有 0 个文档,以及为什么它甚至没有正确格式化/缩进。如果你找到了一个 real 示例,请询问它(但 javadoc 应该让你理解为什么,并且大多数时候,能够为该方法添加/优化文档是原因,比如docs.oracle.com/javase/8/docs/api/java/util/…)
  • 我在 Spring API 实现中找到了它。
  • @subhashis 如果我的帖子符合您的预期,请将其标记为答案。

标签: java ooad


【解决方案1】:

您可能需要将方法的返回类型更改为原始返回类型的子类型。例如:

interface I {
    public Object method();
}

interface I2 extends I {
    @Override
    public Integer method();
}

或者你可以在Java 8引入的方法中添加default实现。例如:

interface I {
    public void method();
}

interface I2 extends I {
    @Override
    default public void method() {
        System.out.println("do something");
    }
}

【讨论】:

  • 不错的答案。顺便说一句,这里的 public 关键字是多余的,除非在 Java 9 中,您可以在接口中使用私有方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
  • 2016-08-12
  • 1970-01-01
  • 2014-10-23
  • 2014-07-17
  • 1970-01-01
相关资源
最近更新 更多