java 类初始化顺序
来源:互联网 发布:淘宝上卖av的店铺 编辑:程序博客网 时间:2024/04/27 16:48
类的初始化顺序
静态变量 -> 静态初始化块 -> 变量 -> 初始化块 -> 构造函数
测试代码
public class ObjectInit { //静态变量 public static final StaticField STATIC_FIELD = new StaticField(); //静态初始化块 static{ System.out.println("静态初始化块"); } //变量 private String field = "变量"; //初始化块 { System.out.println(field); System.out.println("初始化块"); } //构造函数 public ObjectInit(){ System.out.println("构造函数"); } public static void main(String[] ages){ new ObjectInit(); }}
还重定义的静态变量的类
public class StaticField { public StaticField(){ System.out.println("StaticField controctor"); } @Override public String toString() { return "StaticField controctor"; }}
执行结果
StaticField controctor静态初始化块变量初始化块构造函数
当继承父类时的执行顺序是怎样的呢
父类代码:
public class Parent { //静态变量 public static final StaticField PARENT_STATIC_FIELD = new StaticField("父类 静态变量"); //静态初始化块 static{ System.out.println("父类 静态初始化块"); } //变量 private StaticField field = new StaticField("父类 变量"); //初始化块 { System.out.println("父类 初始化块"); } //构造函数 public Parent(){ System.out.println("父类 构造函数"); }}
子类代码:
public class Child extends Parent { //静态变量 public static final StaticField CHILD_STATIC_FIELD = new StaticField("子类 静态变量 "); //静态初始化块 static{ System.out.println("子类 静态初始化块"); } //变量 private StaticField field = new StaticField("子类 变量"); //初始化块 { System.out.println("子类 初始化块"); } //构造函数 public Child(){ System.out.println("子类 构造函数"); } public static void main(String[] agrs){ new Child(); }}
辅助类
public class StaticField { public StaticField(){ System.out.println("StaticField controctor"); } public StaticField(String name){ System.out.println(name); } @Override public String toString() { return "StaticField controctor"; }}
最后执行结果,很清晰看到继承的初始化顺序
父类 静态变量父类 静态初始化块子类 静态变量 子类 静态初始化块父类 变量父类 初始化块父类 构造函数子类 变量子类 初始化块子类 构造函数
0 0
- JAVA 类初始化顺序
- Java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- JAVA类 初始化顺序
- java类初始化顺序
- java 类初始化顺序
- java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- Java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- [Android开发从零开始].8.Activity生命周期
- 关于RecyclerView只显示一行数据的另类解决办法
- libz.dylib框架怎么导入
- CentOS 下通过yum安装MongoDB记录
- C语言中字符串函数的使用底层实现方法
- java 类初始化顺序
- react-bits:Render Callback
- Mybastis的Configuration.xml配置
- Android异步消息处理机制之looper机制
- Java-基本数据类型
- 1109
- Netlink中常用宏定义
- 单例模式
- 《JavaScript高级程序设计 第三版》学习笔记 (一)数据类型详解