实例化一个子类
1,从父类到子类依次加载类:
a , 在堆空间中为static变量分配内存
b , 进行默认初始化
c , 进行显式初始化
d , 执行static代码块
2,从父类到子类依次实例化:
a , 在堆空间中为实例变量分配内存并进行默认初始化
b , 绑定构造方法参数,即将new时传入的实参赋给形参
c , 构造方法中如有this()调用,则调用相应的重载构造方法,最终有某构造方法未调用this(),
继而负责调用父类构造方法(此时即实例化父类,是造成父类到子类依次加载、实例化的原因,并且将一直追溯到Object)
d , 对实例变量进行显式初始化
e , 执行实例代码块代码
f , 执行构造方法中的代码
1,从父类到子类依次加载类:
a , 在堆空间中为static变量分配内存
b , 进行默认初始化
c , 进行显式初始化
d , 执行static代码块
2,从父类到子类依次实例化:
a , 在堆空间中为实例变量分配内存并进行默认初始化
b , 绑定构造方法参数,即将new时传入的实参赋给形参
c , 构造方法中如有this()调用,则调用相应的重载构造方法,最终有某构造方法未调用this(),
继而负责调用父类构造方法(此时即实例化父类,是造成父类到子类依次加载、实例化的原因,并且将一直追溯到Object)
d , 对实例变量进行显式初始化
e , 执行实例代码块代码
f , 执行构造方法中的代码