java类的实例化顺序

  • 1. 父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
  • 2. 子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
  • 3. 父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
  • 4. 父类构造方法
  • 5. 子类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
  • 6. 子类构造方法

 

 总结:父类静态成员和静态代码块->子类静态成员和静态代码块->父类非静态成员和非静态代码块->父类构造方法->子类非静态成员和非静态代码块->子类构造方法

 

父类:

 1 public class A {
 2 
 3     public static String a=printStr("父类的静态变量");
 4     public String s = printStr("父类的非静态变量");
 5     static {
 6         printStr("父类的静态块");
 7     }
 8     {
 9         printStr("父类的非静态块");
10     }
11     public A(){
12         printStr("父类构造方法");
13     }
14 
15 
16     public static String printStr(String str){
17         System.out.println(str);
18         return str;
19     }
20 }

子类:

 1 public class B extends A {
 2 
 3     public static String b=printStr("子类的静态变量");
 4     public String st = printStr("子类的非静态变量");
 5    
 6     static {
 7         printStr("子类的静态块");
 8     }
 9     {
10         printStr("子类的非静态块");
11     }
12     public B(){
13         printStr("子类的构造方法");
14     }
15 
16     //main
17     public static void main(String[] args) {
18         new B();
19     }
20 }

 

运行结果:

父类的静态变量
父类的静态块
子类的静态变量
子类的静态块
父类的非静态变量
父类的非静态块
父类构造方法
子类的非静态变量
子类的非静态块
子类的构造方法

 

posted @ 2019-07-27 10:41  [浪子回头]  阅读(5709)  评论(0编辑  收藏  举报