不调用超类的参数构造函数

时间:2011-12-20 17:55:39

标签: java

如果一个类没有提供任何构造函数,编译器将提供一个默认构造函数,该构造函数又调用超类的无参数。为什么需要调用超类的无参数构造函数?

4 个答案:

答案 0 :(得分:4)

初始化该类的超级(继承)部分

答案 1 :(得分:2)

这样你也可以初始化超类属性。

答案 2 :(得分:1)

对象的构造函数只有部分构造对象才有意义吗?

答案 3 :(得分:0)

它是子类实例与其超类的“is-a”关系的一部分。如果SpottedFooFoo的子类(例如,每个SpottedFoo“是-a”Foo),则应调用Foo构造函数。

否则,如果Foo构造函数执行了初始化(私有或非私有),则SpottedFoo无法保证它可以像Foo那样行事。

这是实现继承合同的一部分:每个子类实例必须能够像其超类的任何其他成员一样工作。这是Liskov substitution principle.