父子类以及static的加载顺序

https://baijiahao.baidu.com/s?id=1660679841519186374&wfr=spider&for=pc

1 static的加载顺序

static可以被写在变量和代码块上,此时该变量和代码块不属于对象,而属于类,会在jvm执行类加载机制时的准备阶段就被赋值以及执行,而非static的变量和代码块在初始化阶段才会被赋值并执行。

image

因此如果问静态方法能否调用非静态变量,答案是不能,因为后者在前者执行时还没有初始化。

2 父子类的加载顺序

https://www.cnblogs.com/Ugly-bear/p/8778017.html

通过结果,可以看到父子类的初始化过程:
先从父类的静态成员进行初始化的,静态成员包括静态变量和静态代码块。
然后初始化子类的静态成员。
然后是父类的普通成员变量,包括代码普通成员和代码块。‘
再然后是父类的构造函数。
最后是子类的普通成员变量和子类的构造函数。
看到这里我才发现,原来子类的构造函数是最后才初始化。而且,父类的成员变量和父类的构造函数初始化顺序是紧挨着的。

image

更详细的理解得深入JVM

https://blog.csdn.net/u011080472/article/details/51330114

posted @ 2021-11-16 17:38  夏·舍  阅读(108)  评论(0编辑  收藏  举报