Java初始化顺序

初始化顺序示例代码:

 1 package com.cnblogs.javalouvre.basic;
 2 
 3 public class Bar extends Foo {
 4 
 5     private static String staticField = "::子类静态变量...";
 6 
 7     static {
 8         System.out.println(staticField);
 9         System.out.println("::子类静态初始化块...");
10     }
11 
12     private String field = "::子类成员变量...";
13 
14     {
15         System.out.println(field);
16         System.out.println("::子类初始化块...");
17     }
18 
19     public Bar() {
20         System.out.println("::子类构造方法...");
21     }
22 
23 }
24 
25 class Foo {
26 
27     private static String staticField = "::父类静态变量...";
28 
29     static {
30         System.out.println(staticField);
31         System.out.println("::父类静态初始化块...");
32     }
33 
34     private String field = "::父类成员变量...";
35 
36     {
37         System.out.println(field);
38         System.out.println("::父类初始化块...");
39     }
40 
41     public Foo() {
42         System.out.println("::父类构造方法...");
43     }
44 
45 }

实例化类Bar,输出结果如下:

 1 ::父类静态变量...
 2 ::父类静态初始化块...
 3 ::子类静态变量...
 4 ::子类静态初始化块...
 5 ::父类成员变量...
 6 ::父类初始化块...
 7 ::父类构造方法...
 8 ::子类成员变量...
 9 ::子类初始化块...
10 ::子类构造方法...

 

小结:Java类装载后初始化顺序为:

  1、父类静态变量,静态块;

  2、子类静态变量,静态块;

  3、父类成员变量,块,构造方法;

  4、子类成员变量,块,构造方法;

posted @ 2013-10-23 19:56  Bruce.Chang.Lee  阅读(254)  评论(0)    收藏  举报