【问题标题】:interface override a method of an other interface接口覆盖另一个接口的方法
【发布时间】:2019-01-28 12:01:32
【问题描述】:

给定

   public interface Crud<T> {
        public T get();
        public T add(String json);
        public T update(String json);
        public T delete(String json);
    }

   public interface AddressCrud extends Crud<AddressResponse> {
        public AddressResponse get();
        public AddressResponse add(String json);
        public AddressResponse update(String json);
        public AddressResponse delete(String json);
    }

如果一个类实现了 AddressCrud ?我们必须实现 4 个方法还是 8 个方法?

现在如果我们写:

   public interface AddressCrud extends Crud<AddressResponse> {
        @Override
        public AddressResponse get();
        @Override
        public AddressResponse add(String json);
        @Override 
        public AddressResponse update(String json);
        @Override
        public AddressResponse delete(String json);
    }

我知道@Override 用于覆盖方法的实现,但是在接口的情况下,@Override 有意义吗?

现在如果一个类在这种情况下实现了 AddressCrud ?我们必须实现 4 个方法还是 8 个方法?

更新:供您参考: 我正在使用一个假装客户端,我需要为每个客户端声明接口..我有几个假装客户端......接口之间有不同的注释..这就是为什么我试图制作一个我称之为 Crud 的通用接口

【问题讨论】:

  • 您不需要重新声明子接口中的方法。只需在基本接口中声明它们。见the docs

标签: java interface


【解决方案1】:

您不需要在AddressCrud 中声明任何方法。扩展Crud&lt;AddressResponse&gt; 就足够了。 这不是泛型的重点。 事实上,你甚至不需要声明AddressCrud,你可以让类实现Crud&lt;AddressResponse&gt;。 无论哪种情况,您都只有 4 种方法可以实现

【讨论】:

  • 不,事实上这不是我的意思,因为我正在使用一个假装客户端,我需要为每个客户端声明几个接口......共享接口之间有不同的注释......这就是为什么我正在尝试制作一个通用界面
【解决方案2】:

标签@Override 在您的情况下毫无意义。顺便说一句,AddressCrud 的实现类将实现 4 种方法。

【讨论】:

  • 所以接口的抽象方法被“覆盖”了..谢谢
猜你喜欢
  • 2013-11-14
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 2014-10-23
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
相关资源
最近更新 更多