什么时候应该在子类中重写超类的方法?如果没有额外的功能,是否必须重写所有超类的方法?

时间:2019-04-12 06:21:38

标签: java

我有一个超类和继承该超类的子类。该超类包含6个方法,但我的子类仅对超类的1种方法有不同的实现,需要对其进行覆盖。我是否仍然需要通过重写子类中的其余5种方法来实现,即;

@Override
public void someMethod(String someString) {
    super.someMethod(someString);
}

我觉得这样做是多余的,但是当在子类中调用someMethod时,如果未重写超类的方法,或者它会出现错误,它将执行超类的方法吗?我不知道什么是好的编程习惯,因为我是Java新手。

2 个答案:

答案 0 :(得分:0)

不,如果不更改其他方法的实现,则不必重写其他方法,这就是继承的含义。这是重用代码以避免重复的好习惯。

  

当在子类中调用someMethod时,它将执行超类的   方法,如果它没有被覆盖或会出现错误?

是的,它将。除非您调用的方法对子类可见,否则不会引发任何错误。

答案 1 :(得分:0)

根据官方Oracle documentation

  

子类重写方法的能力允许类从行为“足够接近”的超类继承,然后根据需要修改行为。覆盖方法与其覆盖的方法具有相同的名称,数量和参数类型,并且返回类型相同。重写方法还可以返回重写方法返回的类型的子类型。此子类型称为协变返回类型。

     

覆盖方法时,您可能需要使用@Override   注释,指示编译器您打算覆盖   超类中的方法。如果出于某种原因,编译器检测到   该方法在超类之一中不存在,则它   将产生一个错误。

所以我建议阅读正式文件。

相关问题