2011-12-20 63 views
0

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

+1

你的第一句话并不完全准确。编译器将只**提供一个默认的无参数构造函数**如果你自己没有提供任何构造函数**。只要添加构造函数,无论它接受多少个参数,默认的no-arguments构造函数都不会由编译器生成。 – ivantod 2011-12-20 18:00:23

+0

@ivantod我同意你的意见....我已经纠正了它.. – Rekha 2011-12-20 18:01:42

+0

也为了安全,如果超级类没有没有参数构造函数呢? – Stefan 2011-12-20 18:51:34

回答

4

要初始化超(继承)该类别的一部分

2

这样就可以初始化超类的属性,以及。

1

是否有意义的对象的构造函数只有部分构造对象?

0

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

否则,如果由Foo构造函数执行的初始化(私有或不是)被跳过,那么SpottedFoo不能保证它可以像Foo那样操作。

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