Java 类的实例化顺序
当类加载操作完成,开始进行实例化。
- 在实例化子类B时,先要实例化父类A
- 实例化父类A时,先成员实例化(非静态代码)
- 父类A的构造方法
- 子类B的成员实例化(非静态代码)
- 子类B的构造方法
初始化父类的静态代码—>初始化子类的静态代码–>初始化父类的非静态代码—>初始化父类构造函数—>初始化子类非静态代码—>初始化子类构造函数
注意:静态代码块先于静态成员属性初始化,普通代码块先于构造函数初始化。
|
|
SingleTon singleTon = SingleTon.getInstance();
调用了类的SingleTon调用了类的静态方法,触发类的初始化
类加载的时候在准备过程中为类的静态变量分配内存并初始化默认值
singleton=null count1=0,count2=0
类初始化化,为类的静态变量赋值和执行静态代码快。singleton 赋值为 new SingleTon()
调用类的构造方法
调用类的构造方法后
count=1;count2=1
- 原文作者:范明勇
- 原文链接:https://blog.fanmuyong.com/post/Java-%E7%B1%BB%E7%9A%84%E5%AE%9E%E4%BE%8B%E5%8C%96%E9%A1%BA%E5%BA%8F/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。