Java类、类属性、静态块、实例、实例属性、实例块初始化顺序

来源:互联网 发布:mac系统怎样翻墙 编辑:程序博客网 时间:2024/05/19 14:51

总的来说:先加载类,在加载实例

顺序如下:

1、类属性,也叫静态属性(含静态代码块,就是属性前面加了static的那种),只加载一次。父类加载在子类前。

     在类加载器加载该类的时候加载。

2、实例属性,也叫非静态属性。父类在子类之前。

    在生成实例的时候加载(构造方法之前)。

3、构造方法,先父类,后子类。

     生成实例的时候会调用构造方法(实例属性加载完调用构造方法)。

 

2.3俩点有个要注意的地方:加载完父类实例属性后会加载父类构造方法,然后再加载子类实力属性以及子类构造方法。

 

不多说,直接上例子。

1、Print.java

package com.yuyubing.lambda;public class Print {public Print(int i) {System.out.println("instance print: " + i);}public Print(int i, PrintType type) {if (type == PrintType.PARENTS) {System.out.println("parent static print: " + i);} else {System.out.println("son static print: " + i);}}enum PrintType {PARENTS,SON}}


 


2、Parents.java

package com.yuyubing.lambda;import com.yuyubing.lambda.Print.PrintType;public class Parents {private static Print param5 = new Print(5, PrintType.PARENTS);static {System.out.println("parents static block");}private static Print param6 = new Print(6, PrintType.PARENTS);private Print param1 = new Print(1);{System.out.println("parents instance block");}public Parents() {System.out.println("parents construction method ");}private Print param2 = new Print(2);}


3、Son.java

package com.yuyubing.lambda;import com.yuyubing.lambda.Print.PrintType;public class Son extends Parents {private Print param1 = new Print(3);private static Print param7 = new Print(7, PrintType.SON);static {System.out.println("son static block");}private static Print param8 = new Print(8, PrintType.SON);{System.out.println("son instance block");}public Son() {System.out.println("son construction method ");}private Print param2 = new Print(4);}


4、Hello.java

package com.yuyubing.lambda;public class Hello { public static void main(String[] args) {       Son son1 = new Son();Son son2 = new Son(); }  }

 

运行结果如下:

parent static print: 5
parents static block
parent static print: 6
son static print: 7
son static block
son static print: 8
instance print: 1
parents instance block
instance print: 2
parents construction method
instance print: 3
son instance block
instance print: 4
son construction method
instance print: 1
parents instance block
instance print: 2
parents construction method
instance print: 3
son instance block
instance print: 4
son construction method


 

1 1
原创粉丝点击