java中类的初始化顺序

来源:互联网 发布:java如何连接数据库 编辑:程序博客网 时间:2024/04/29 22:51

含有继承的类的初始化顺序:父类的静态变量->父类的静态块->子类静态变量->子类静态初始化块->父类变量->父类初始化块->父类的构造函数->子类的变量->子类初始化块->子类构造函数;(变量和初始化块之间的先后顺序根据类中的先后位置而定)

Code:
  1. public class InitialClassOrderTestextends InitialClassOrderBasic{  
  2.     // 静态变量  
  3.     public static String staticField = "静态变量";  
  4.     // 变量  
  5.     public String field ="变量";  
  6.  
  7.     // 静态初始化块  
  8.     static {  
  9.         System.out.println(staticField);  
  10.         System.out.println("静态初始化块");  
  11.     }  
  12.  
  13.     // 初始化块  
  14.     {  
  15.         System.out.println(field);  
  16.         System.out.println("初始化块");  
  17.     }  
  18.  
  19.     // 构造器  
  20.     public InitialClassOrderTest() {  
  21.         System.out.println("构造器");  
  22.     }  
  23.  
  24.     public staticvoid main(String[] args) {  
  25.         new InitialClassOrderTest();  
  26.     }  
Code:
  1. public class InitialClassOrderBasic {  
  2.     // 静态变量  
  3.     public static String staticField = "父类静态变量";  
  4.     // 变量  
  5.     public String field ="父类变量";  
  6.  
  7.     // 静态初始化块  
  8.     static {  
  9.         System.out.println(staticField);  
  10.         System.out.println("父类静态初始化块");  
  11.     }  
  12.  
  13.     // 初始化块  
  14.     {  
  15.         System.out.println(field);  
  16.         System.out.println("父类初始化块");  
  17.     }  
  18.  
  19.     // 构造器  
  20.     public InitialClassOrderBasic() {  
  21.         System.out.println("父类构造器");  
  22.     }  
  23.  

执行结果:

Code:
  1. 父类静态变量  
  2. 父类静态初始化块  
  3. 静态变量  
  4. 静态初始化块  
  5. 父类变量  
  6. 父类初始化块  
  7. 父类构造器  
  8. 变量  
  9. 初始化块  
  10. 构造器  
原创粉丝点击