



————下课后————



结论
类的加载顺序。
(1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)
(2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 )
(3) 父类非静态代码块( 包括非静态初始化块,非静态属性 )
(4) 父类构造函数
(5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 )
(6) 子类构造函数

例子1
运行下面代码,输出的结果是()
A
B
C
D




例子2
以上程序输出:
static Casts
haha
换一下静态变量和静态代码块的执行顺序。
class Print{
Print(){
System.out.println("haha");
}
}
public class Cats {
static Print test1 = new Print();
static {
System.out.println("static Casts");
}
}
class qiaoGeli extends Cats{
public static void main(String [] args)
{
qiaoGeli t1 = new qiaoGeli();
}
}
以上程序输出:
haha
static Casts


例子3
以上程序输出:
haha
I'm xiaoMeng
I'm qiaoGeLi


例子4
以上程序输出:
I'm xiaoMeng
haha
I'm qiaoGeLi


结论
类的执行顺序。
(1)父类静态变量和静态代码块(先声明的先执行);
(2)子类静态变量和静态代码块(先声明的先执行);
(3)父类的非静态属性(变量)和非静态代码块(先声明的先执行);
(4)父类构造函数
(5)子类的非静态属性(变量)和非静态代码块(先声明的先执行);
(6) 子类构造函数
小萌:乔哥辛苦了,给你按摩!

PS:表情包出自微信公众号:叔婆饭 微博@叔婆饭spfan
END
觉得文章不错的,欢迎点好看和转发,长按下图关注程序员乔戈里,收看更多精彩。

——————
今日问题:采纳了大家的意见,进行了改进,还有什么不足或对于本文有何看法,欢迎留言!
本文详细解析了Java中类的加载顺序,包括静态与非静态成员的初始化过程,通过实例展示了父类与子类成员的加载时机。适用于理解Java类初始化机制的开发者。
4659

被折叠的 条评论
为什么被折叠?



