【笔记】java类成员变量及代码块加载顺序

比较内容(父类和子类):

非静态成员变量

静态成员变量

构造代码块

静态代码块

构造函数

 

局部

1、static优先于非static

2、成员变量从上到下初始化(前面定义的变量不能调用后面的变量)

3、变量初始化优先于方法或代码块(不然方法或代码块就没法使用变量)

4、父类优先于子类初始化

 

总体来说,以上条件合起来又会是怎样呢?

子类:

【笔记】java类成员变量及代码块加载顺序

父类:

【笔记】java类成员变量及代码块加载顺序

运行结果如下图:

【笔记】java类成员变量及代码块加载顺序

由此可见,在new一个类的对象时,类成员初始化及调用顺序为:

1.class字节码加载入jvm过程:父static变量、父static代码块、子static变量、子static代码块

2.实例化类对象过程:父成员变量、父构造代码块、父构造函数、子成员变量、子构造代码块、子构造函数