如果一个类没有提供任何构造函数,编译器将提供一个默认构造函数,该构造函数又调用超类的无参数。为什么需要调用超类的无参数构造函数?
答案 0 :(得分:4)
初始化该类的超级(继承)部分
答案 1 :(得分:2)
这样你也可以初始化超类属性。
答案 2 :(得分:1)
对象的构造函数只有部分构造对象才有意义吗?
答案 3 :(得分:0)
它是子类实例与其超类的“is-a”关系的一部分。如果SpottedFoo
是Foo
的子类(例如,每个SpottedFoo
“是-a”Foo
),则应调用Foo
构造函数。
否则,如果Foo
构造函数执行了初始化(私有或非私有),则SpottedFoo
无法保证它可以像Foo
那样行事。
这是实现继承合同的一部分:每个子类实例必须能够像其超类的任何其他成员一样工作。这是Liskov substitution principle.