源代码:
 
 
- public class SuperAndSub {  
-   
-     public static void main(String[] args) {  
-   
-         
-         
-         Sub s3 = new Sub();  
-     }  
- }  
-   
- class Super {  
-   
-     static int a = getA();  
-   
-     static {  
-         System.out.println("加载Super的静态块");  
-     }  
-   
-     int b = getB();  
-   
-     {  
-         System.out.println("加载Super的普通块");  
-     }  
-   
-     Super() {  
-         System.out.println("加载Super的构造器");  
-     }  
-   
-     static int getA() {  
-         System.out.println("加载Super的静态变量");  
-         return 1;  
-     }  
-   
-     static int getB() {  
-         System.out.println("加载Super的实例变量");  
-         return 2;  
-     }  
-   
- }  
-   
- class Sub extends Super {  
-   
-     static int c = getC();  
-   
-     static {  
-         System.out.println("加载Sub的静态块");  
-     }  
-   
-     int d = getD();  
-   
-     {  
-         System.out.println("加载Sub的普通块");  
-     }  
-   
-     Sub() {  
-         System.out.println("加载Sub的构造器");  
-     }  
-   
-     static int getC() {  
-         System.out.println("加载Sub的静态变量");  
-         return 1;  
-     }  
-   
-     static int getD() {  
-         System.out.println("加载Sub的实例变量");  
-         return 2;  
-     }  
- }  
 
 
 
输出:
 
- 加载Super的静态变量  
- 加载Super的静态块  
- 加载Sub的静态变量  
- 加载Sub的静态块  
- 加载Super的实例变量  
- 加载Super的普通块  
- 加载Super的构造器  
- 加载Sub的实例变量  
- 加载Sub的普通块  
- 加载Sub的构造器  
 Java类中的各种成员的加载顺序
原文:http://www.cnblogs.com/Yxxxxx/p/6853678.html