1.类加载,并且静态初始化
2.申请内存空间并且清零
3.递归初始化父类,先顺序初始化父类数据成员,再调用父类构造器
4.顺序初始化子类数据成员并调用构造器
问题:
1.在整个构造子类对象的过程中,this指向的是子类对象,所以在父类构造器中调用父类的方法这种做法是有可能得不到正确结果的;这种情况出现在子类将父类方法进行重写的时候,在父类构造器中,调用该方法,由于动态绑定,将执行子类的该方法,而这时子类数据成员只进行了清零(即默认初始化),所以可能得不到正确结果。在构造器中唯一能够安全调用的那些方法是用private或final修饰的方法。
2.对象初始化时,所有的数据成员(包括父类的)是在一开始就全部申请空间而后清零,还是每到一个层次的父类,然后为父类申请空间并清零?我猜测是后者的可能性更大。