【问题标题】:Extends a class(which implements interface) and implements same interface doesn't require method defination in class?扩展一个类(实现接口)并实现相同的接口不需要在类中定义方法吗?
【发布时间】:2012-10-24 11:25:04
【问题描述】:

/C类实现了接口A,但是没有定义go()方法对吗?/

interface A { void go();}
Class B implements A { void go(){#Some code here}}
Class C extends B implements C {}

【问题讨论】:

  • 我们可以假设Class C 应该有implements A吗?
  • 类 C 扩展 B 实现 C{} 哪里是 C interface
  • 我在 eclipse 中得到了这个“检测到循环:C 类型不能扩展/实现自身或它自己的成员类型之一”

标签: java class interface


【解决方案1】:

没错。但是,接口中的方法是public abstract,即使您没有这样定义它。

实现类方法也必须是公共的,因为您不能降低方法的可见性。所以,B 类中的方法应该是public

【讨论】:

    【解决方案2】:

    请记住,C 是 B,因此具有来自 B 的方法定义。如果您真的希望这样做,您必须为 B 和 C 创建一个抽象基类。

    【讨论】:

      【解决方案3】:

      是的,C 扩展了实现了go 的 B,因此 C 继承了这个实现。

      【讨论】:

        【解决方案4】:

        没错。因为它已经继承来自B 的方法。事实上,C 类的 implements A 是多余的!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-05-22
          • 2012-10-13
          • 2010-10-13
          • 1970-01-01
          • 2016-04-28
          • 2012-12-10
          • 1970-01-01
          相关资源
          最近更新 更多