在执行扩展类的构造方法中,需要执行一下步骤:
- 调用父类的构造方法
- 执行字段的初始器
- 执行构造器体
例如
public class animal {
int animalbirthage = 0;
int nowage;
public animal(){
nowage = animalbirthage;
}
}
class human extends animal{
int humanbirthage = 1;
public human(){
this.nowage = humanbirthage;
}
}
那么,当我们生成一个human的对象时,它的字段nowage经历了怎样的变化呢?
其实,经历了在8个步骤:
将字段设置为默认值,nowage是一个int的基本数据类型,那么它的默认值是0;
调用human的构造器
默认调用父类animal的构造器
默认调用父类Object的构造器
animal的字段初始化,这时nowage变成了0
执行animal的构造器,这里没有,跳过
human的字段初始化,这时nowage变成了1
执行human的构造器,这里没有,跳过
结束