【发布时间】:2013-06-05 21:55:15
【问题描述】:
我发现了一些类似的话题,例如here,但他们并没有完全回答我的问题。问题很简单:
在子类的构造函数中调用super() 是一种好习惯吗?我当然知道,如果我没有明确地做到这一点,编译器会为我做这件事,但我只是在最佳实践的背景下询问。您是否认为在每个子类的构造函数中调用 super() 是“形式战胜实质”?
我正在使用包含使用策略的代码,所以我明白了,对于许多程序员来说,这根本不重要...对我来说现在也没关系,但也许我应该改变它...
【问题讨论】:
-
如果超类没有默认构造函数,您必须这样做。例如:
class Fruit{ protected String flavor; public Fruit(String flavor) { this.flavor = flavor; } } class Apple extends Fruit { public Apple() { super("sweet"); } }。题外话:super("sweet")听起来很有趣:)。 -
我从不使用空的
super(),因为它只是多余的,但正如@LuiggiMendoza 所说,super(...)可能是必要的。 -
是的,当然。但我的意思只是 super 可以省略的情况。
标签: java inheritance constructor superclass super