Java初始化顺序

Java初始化顺序

无继承普通类初始化顺序(同一优先级按语句先后顺序进行初始化)
1、静态属性、静态代码块
2、main方法
3、非静态属性、非静态代码块
4、构造方法(构造器)

有继承的类的初始化顺序
main方法在父类内时(new子类):
1、父类静态代码块
2、父类静态属性
3、main方法入口
4、子类静态代码块
5、子类静态属性
6、父类非静态代码块
7、父类非静态属性
8、父类构造器
9、子类非静态代码块
10、子类非静态属性
11、子类构造器
main方法在子类内时(new子类):
1、父类静态代码块
2、父类静态属性
3、子类静态代码块
4、子类静态属性
5、main方法入口
6、父类非静态代码块
7、父类非静态属性
8、父类构造器
9、子类非静态代码块
10、子类非静态属性
11、子类构造器

含父类、子类和普通类一起的混合类的初始化顺序
main方法在父类内时(new普通类和子类):
1、父类静态代码块
2、父类静态属性
3、main方法入口
4、普通类静态代码块
5、普通类静态属性
6、普通类非静态代码块
7、普通类非静态属性
8、普通类构造器
9、子类静态代码块
10、子类静态属性
11、父类非静态代码块
12、父类非静态属性
13、父类构造器
14、子类非静态代码块
15、子类非静态属性
16、子类构造器
main方法在子类内时(new普通类和子类):
1、父类静态代码块
2、父类静态属性
3、子类静态代码块
4、子类静态属性
5、main方法入口
6、普通类静态代码块
7、普通类静态属性
8、普通类非静态代码块
9、普通类非静态属性
10、普通类构造器
11、父类非静态代码块
12、父类非静态属性
13、父类构造器
14、子类非静态代码块
15、子类非静态属性
16、子类构造器
main方法在普通类内时(new普通类和子类):
1、普通类静态代码块
2、普通类静态属性
3、main方法入口
4、普通类非静态代码块
5、普通类非静态属性
6、普通类构造器
7、父类静态代码块
8、父类静态属性
9、子类静态代码块
10、子类静态属性
11、父类非静态代码块
12、父类非静态属性
13、父类构造器
14、子类非静态代码块
15、子类非静态属性
16、子类构造器

总结:main方法所在的类首先完成静态初始化,然后进入main方法进行初始化,根据new的先后顺序完成对象的初始化。
注:静态数据只初始化一次,例如:main方法在普通类中再new一个普通类,new的对象中就不会进行静态数据的初始化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值