java类的加载顺序

一个java类的加载顺序,今天做了一个实验,结果如下

 

超类的静态成员

超类的静态块

子类的静态成员

子类的静态块

超类的非静态成员

超类的构造函数

子类的非静态成员

子类的构造函数

class Parent1 {  
    private String parent="parent init";  
    private static String staticVar="Parent static init";  
      
    public Parent1(){  
        System.out.println(parent);  
        System.out.println("parent constructor......");  
    }  
      
    static{  
        System.out.println("parent static block ........"+staticVar);  
    }  
}  
class Son1 extends Parent1{  
    private String son="son init";  
    private static String staticSonnVar="son static init";  
      
    public Son1(){  
        System.out.println(son);  
        System.out.println("son constructor....");  
    }  
    static{  
        System.out.println("son static block....."+staticSonnVar);  
    }  
}  
 public class ClassProject  
{  
    public static void main(String[] args)   
    {     
    //  Parent1 parent=new Parent1();  
        Son1 son=new Son1();  
    }  
}

结果:

parent static block ........Parent static init
son static block.....son static init
parent init
parent constructor......
son init
son constructor....

你可能感兴趣的:(java类的加载顺序)