一个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....