Java 我应该何时重写超类';子类中的方法?必须是所有超类';如果没有额外的功能,将重写的方法?

Java 我应该何时重写超类';子类中的方法?必须是所有超类';如果没有额外的功能,将重写的方法?,java,Java,我有一个超类和继承超类的子类。超类包含6个方法,但我的子类只有一个需要重写的超类方法的不同实现。我是否仍然必须通过这样做覆盖子类中剩余的5个方法,即 @覆盖 公共void someMethod(字符串someString){ super.someMethod(someString); } 我觉得这样做是多余的,但是当在子类中调用someMethod时,如果它没有被重写,它会执行超类的方法吗?还是会出现错误?我不确定什么是好的编程实践,因为我是Java新手。不,如果不更改其他方法的实现,就不必重

我有一个超类和继承超类的子类。超类包含6个方法,但我的子类只有一个需要重写的超类方法的不同实现。我是否仍然必须通过这样做覆盖子类中剩余的5个方法,即

@覆盖
公共void someMethod(字符串someString){
super.someMethod(someString);
}

我觉得这样做是多余的,但是当在子类中调用someMethod时,如果它没有被重写,它会执行超类的方法吗?还是会出现错误?我不确定什么是好的编程实践,因为我是Java新手。

不,如果不更改其他方法的实现,就不必重写它们,这就是继承的含义。这是重用代码以避免重复的一个很好的实践

在子类中调用someMethod时,它会执行超类的 方法,或者是否会出现错误

是的,会的。除非您调用的方法对子类可见,否则不会抛出错误。

根据官方

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

重写方法时,可能需要使用@Override 注释,该注释指示编译器要重写 超类中的方法。如果由于某种原因,编译器检测到 如果该方法不存在于其中一个超类中,则 将生成一个错误


因此,我建议您阅读官方文档。

覆盖您必须覆盖的内容,继承您可以继承的内容。这取决于超类的类型,如果它是
抽象类,则必须覆盖所有方法。对于具体类,您只需重写所需的内容。这是
OOPs
的基本原理,你的超类的方法可以被子类使用。@darshgohel,如果它是一个抽象类,你必须重写你的所有方法,不是真的,你必须只重写那些没有实现的方法。我不同意,继承是代码重用的好方法@安德洛尼卡,我们不是在构图和继承之间做出选择。这两种方法都有利弊。继承有助于避免代码重复,这就是关键所在。