这更像是一个理解问题。我有一个名为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类时,它在运行之前显示错误编译错误,但它仍然不需要我实现子类,尽管它们没有实现界面。你知道为什么吗?当我只实现了超级类时,它根本没有显示任何错误。如果你能帮我今天测试它,我将非常感激,我需要了解逻辑。
答案 0 :(得分:2)
如果接口已经通过超类实现了,我是否需要通过子类单独实现它,因为我写了它们实现它?
我不确定,因为从技术上讲,它们继承了Worker和Worker中的所有方法实现了接口,如果我在子类中写入它们实现接口,它实际上是否有所不同,或者如果我有什么不同之处不写吗?
我尝试创建这些类,当我没有实现Worker类时,它在运行之前显示错误编译错误但是它仍然不需要我实现子类,尽管它们没有接口的实现。你知道为什么吗?
Worker
中实现,则子类将继承父类中的方法。老实说,试试IntelliJ社区版,你可以很容易地看到答案。
Per Effective Java,我相信你的Worker
应该是一个抽象类。你会发现它非常有用。
答案 1 :(得分:1)
您不需要在子类(derived
类)中实现它。
派生类继承了基类的所有实现,并且可以覆盖任何虚拟实现。