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方法
父类--变量
父类--初始化块
父类--构造器
子类--变量
子类--初始化块
子类--构造器