Java创建对象的初始化顺序(转载)
来源:互联网 发布:php如何防止sql注入 编辑:程序博客网 时间:2024/06/07 14:56
初始化块
初始化块通常写在类的构造方法之前,由花括号括起来,通常包含对成员属性进行初始化的语句;
初始化块分为instance初始化块和static初始化块,初始化块在构造方法执行之前被执行;
static初始化块不能访问非statci成员,也不能调用非static方法,并且只在类加载时执行一次;
初始化块通常用于提取多个构造方法中的公共代码。
- 初始化的执行顺序
(1)在初次new一个Child类对象时,发现其有父类,则先加载Parent类,再加载Child类。
(2)加载Parent类:
初始化Parent类的static属性,赋默认值; 执行Parent类的static初始化块;
(3)加载Child类:
初始化Child类的static属性,赋默认值;
执行Child类的static初始化块;
(4)创建Parent类对象:
初始化Parent类的非static属性,赋默认值;
执行Parent类的instance初始化块;
执行Parent类的构造方法;
(5)创建Child类对象:
初始化Child类的非static属性,赋默认值;
执行Child类的instance初始化块;
执行Child类的构造方法;
后面再创建Child类对象时,就按照顺序执行(4)(5)两步。
class Parent{ private static int ps; private int pv; static { System.out.println("parent static init block"); } { System.out.println("parent init block"); } Parent() { System.out.println("parent constructor"); }}class Child extends Parent{ private static int cs; private int cv; static { System.out.println("child static init block"); } { System.out.println("child init block"); } Child() { System.out.println("child constructor"); }}public class Test{ public static void main(String[] args) { new Child(); new Child(); }}
执行结果是:
parent static init block
child static init block
parent init block
parent constructor
child init block
child constructor
parent init block
parent constructor
child init block
child constructor
- Java创建对象的初始化顺序(转载)
- java类的初始化和对象的创建顺序
- java中在创建对象时候的初始化顺序
- Java继承,创建对象初始化顺序
- java对象创建过程/初始化顺序
- java对象创建过程及初始化顺序
- java对象的初始化顺序
- java对象的初始化顺序
- java对象的初始化顺序
- JAVA对象的初始化顺序
- java对象的初始化顺序
- java对象初始化的顺序
- java对象的初始化顺序
- java 对象的初始化顺序
- (转载)JAVA中对象创建和初始化过程
- java 创建对象的四种方式、java对象初始化顺序
- JAVA对象初始化顺序
- java对象初始化顺序
- 用R语言的NetworkInference包推理隐藏的(州政府、网站)影响力网络关系
- spring boot(二):web综合开发
- python的命名空间和对象
- JAVA集合--ArrayList实现原理
- HTML<input>标签
- Java创建对象的初始化顺序(转载)
- EDI-Vermas报文开发
- Tomcat:在Eclipse/MyEclipse中启动Tomcat出现JVM_Bind错误的解决方法
- yii rules验证
- 教您用xmanager启动Linux上的图形界面程序
- Android初级开发(十)——百度定位—在地图上显示你的位置
- 一张图片多个链接,点击之后框框显示如何去掉
- Cloud Native时代SaaS类Web应用的后端数据库架构设计:核心概念的简化:主键设计
- JMeter-前置处理器