为什么子类必须在子类初始化自己的变量之前调用超类构造函数

时间:2016-04-05 00:33:26

标签: java constructor initialization subclass superclass

我看到了online下面的代码,并且在我更改了自己的变量(即public int seatHeight)之后,子类构造函数调用了超类构造函数,在我更改了初始化的顺序之后,即通过放置{{1}在seatHeight = startHeight;之前,我的IDE显示错误消息。我只是想知道在子类可以初始化自己的变量之前调用超类构造函数的原因是什么?什么是管理超类和子类初始化的一些规则?

super(startCadence, startSpeed, startGear);

1 个答案:

答案 0 :(得分:4)

子类是超类的扩展,可以访问超类中的任何公共/受保护/包成员和方法。

除非将其强制转换为子类,否则超类不能访问子类的成员/方法。通过直接OO,超类对子类一无所知。

由于子类可以访问超类中的成员/方法,因此必须在子类之前初始化超类,以便任何初始值,内存位置,以及任何具有有效起始值的内容。

顺便说一句,在我使用的所有OO语言中都是如此,非常确定这是一个普遍的事实。