父子类加载顺序 静态 非静态 构造方法
父子类加载顺序
父类静态成员变量–》父类静态代码块–》子类静态成员变量–》子类静态代码块–》父类非静态成员变量–》父类非静态代码块–》父类构造方法–》子类非静态成员变量–》子类非非静态代码块–》子类构造方法
记住如下
父类 > 子类
静态 > 非静态
变量 > 代码块 > 构造方法
实例代码
public class Father{
static Hello hello1=new Hello("father 静态成员变量");
Hello hello2=new Hello("father 非静态成员变量");
{
System.out.println("father 非静态代码块");
}
static {
System.out.println("father 静态代码块");
}
public Father(){
System.out.println("father 构造方法");
}
}
public class Son extends Father{
static Hello hello1=new Hello("Son 静态成员变量");
Hello hello2=new Hello("Son 非静态成员变量");
{
System.out.println("Son 非静态代码块");
}
static {
System.out.println("Son 静态代码块");
}
public Son(){
System.out.println("son 构造方法");
}
}
public class Hello {
public Hello(String name){
System.out.println(name);
}
}
public class Test{
public static void main(String[] args) {
Son son = new Son();
}
}