子类需要实现接口吗?

时间:2018-04-22 06:24:49

标签: class inheritance interface

这更像是一个理解问题。我有一个名为InterExe1的接口,它有2个方法-print1(),print2()。 该接口由超类工作者

实现
 public class Worker implements InterExe1

然后我还有2个继承自Worker类的子类,并且还实现了接口

Public class DayWorker extends Worker implements InterExe1
Public class nightWorker extends Worker implements InterExe1

如果接口已经通过超类实现了,我是否需要通过子类单独实现它,因为我写了它们实现它?我不确定,因为从技术上讲,它们继承了Worker和Worker中的所有方法实现了接口,如果我在子类中写入它们实现接口,它实际上是否有所不同,或者如果我没有写它有什么区别呢?我尝试创建这些类,当我没有实现Worker类时,它在运行之前显示错误编译错误,但它仍然不需要我实现子类,尽管它们没有实现界面。你知道为什么吗?当我只实现了超级类时,它根本没有显示任何错误。如果你能帮我今天测试它,我将非常感激,我需要了解逻辑。

2 个答案:

答案 0 :(得分:2)

  • 如果接口已经通过超类实现了,我是否需要通过子类单独实现它,因为我写了它们实现它?

    • 没有
  • 我不确定,因为从技术上讲,它们继承了Worker和Worker中的所有方法实现了接口,如果我在子类中写入它们实现接口,它实际上是否有所不同,或者如果我有什么不同之处不写吗?

    • 否。除了它是多余的
  • 我尝试创建这些类,当我没有实现Worker类时,它在运行之前显示错误编译错误但是它仍然不需要我实现子类,尽管它们没有接口的实现。你知道为什么吗?

    • 如果一个类实现了一个接口,它必须实现所有方法。如果已在Worker中实现,则子类将继承父类中的方法。

老实说,试试IntelliJ社区版,你可以很容易地看到答案。

Per Effective Java,我相信你的Worker应该是一个抽象类。你会发现它非常有用。

答案 1 :(得分:1)

您不需要在子类(derived类)中实现它。

派生类继承了基类的所有实现,并且可以覆盖任何虚拟实现。