返回博主主页

java父类、子类构造函数调用过程

java父类、子类构造函数调用过程
由此看出java类初始化时构造函数调用顺序:

  1. 初始化对象的存储空间为零或null值;
  2. 按顺序分别调用父类成员变量和实例成员变量的初始化表达式;
  3. 调用父类构造函数;(如果实用super()方法指定具体的某个父类构造函数则使用指定的那个父类构造函数)
  4. 按顺序分别调用类成员变量和实例成员变量的初始化表达式;
  5. 调用类本身构造函数。

//先执行外部类构造方法,再执行内部类构造方法

[Java实例化顺序
]( https://www.cnblogs.com/liufengfan/p/12395086.html#:~:text=Java实例化顺序 1.初始化父类静态变量%2C如果没有赋值%2C默认初始化为null 2.调用父类 static {} 静态代码块 ,3.%E5%88%9D%E5%A7%8B%E5%8C%96%E5%AD%90%E7%B1%BB%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F%204.%E8%B0%83%E7%94%A8%E5%AD%90%E7%B1%BB%20static%20%7B%7D%20%E9%9D%99%E6%80%81%E4%BB%A3%E7%A0%81%E5%9D%97%205.%E5%88%9D%E5%A7%8B%E5%8C%96%E7%88%B6%E7%B1%BB%E6%88%90%E5%91%98%E5%8F%98%E9%87%8F%2C%E5%A6%82%E6%9E%9C%E6%B2%A1%E6%9C%89%E8%B5%8B%E5%80%BC%2C%E9%BB%98%E8%AE%A4%E5%88%9D%E5%A7%8B%E5%8C%96%E4%B8%BAnull%20%28%E6%AD%A4%E6%97%B6this%E6%8C%87%E9%92%88%E5%B7%B2%E7%BB%8F%E5%AD%98%E5%9C%A8%E4%BA%86%29)

1.初始化父类静态变量,如果没有赋值,默认初始化为null

2.调用父类 static{} 静态代码块

3.初始化子类静态变量

4.调用子类 static{} 静态代码块

5.初始化父类成员变量,如果没有赋值,默认初始化为null (此时this指针已经存在了)

6.调用父类 成员代码块 {}

7.调用父类构造函数(如果没有显示调用父类构造函数则调用默认构造函数)

8.初始化子类成员变量

9.调用子类成员代码块 {}

10.调用子类构造函数

以上 1 - 4 步只有在类首次被加载的时候执行,之后就不执行了

posted @ 2024-09-13 15:52  懒惰的星期六  阅读(192)  评论(0)    收藏  举报