【笔记】java类成员变量及代码块加载顺序
比较内容(父类和子类):
非静态成员变量
静态成员变量
构造代码块
静态代码块
构造函数
局部
1、static优先于非static
2、成员变量从上到下初始化(前面定义的变量不能调用后面的变量)
3、变量初始化优先于方法或代码块(不然方法或代码块就没法使用变量)
4、父类优先于子类初始化
总体来说,以上条件合起来又会是怎样呢?
子类:
父类:
运行结果如下图:
由此可见,在new一个类的对象时,类成员初始化及调用顺序为:
1.class字节码加载入jvm过程:父static变量、父static代码块、子static变量、子static代码块
2.实例化类对象过程:父成员变量、父构造代码块、父构造函数、子成员变量、子构造代码块、子构造函数