Java类的初始化顺序

代码:

 1 public class Base
 2 {
 3     private String baseName = "base";
 4     public Base()
 5     {
 6         callName();
 7     }
 8     public void callName()
 9     {
10         System.out.println(baseName);
11     }
12 
13     static class Sub extends Base
14     {
15         //private static String baseName = "sub";
16         private String baseName = "sub";
17         public void callName()
18         {
19             System.out.println(baseName);
20         }
21     }
22 
23     public static void main(String[] args)
24     {
25         Base b = new Sub();
26     }
27 }

输出:

null

 如果将代码第16行替换为第15行,则输出为

Sub

 Java类的初始化顺序:

父类--静态变量
父类--静态初始化块
子类--静态变量
子类--静态初始化块
子类main方法
父类--变量
父类--初始化块
父类--构造器
子类--变量
子类--初始化块
子类--构造器

posted @ 2016-07-15 15:14  hu983  阅读(119)  评论(0编辑  收藏  举报