Java父类子类加载构造代码块

class Test2_Extends{ //主函数
public static void main(String[] args){
Zi z=new Zi(); //创建对象
}
}
/*
1.jvm调用main方法,main进栈;
2.遇到Zi z=new Zi(),先将父类、子类分别加载进内存,再创建对象;
3.父类进入内存,静态代码块会加载,子类进入内存,子类静态代码块会加载;
4.子类构造方法,java分层初始化。先初始化父类,再初始化子类,所以先走父类构造,但在执行父类构造时,发现父类有构造代码块,构造代码块优先于构造方法执行
5.故而输出构造代码块父,然后构造方法父
6.父类初始化结束,子类初始化,先代码块,后构造方法
*/

class Fu { //父类
static{
System.out.println(“静态代码块Fu”);
}
{
System.out.println(“构造代码块Fu”);
}

public Fu(){
	System.out.println("构造方法Fu");
}

}

class Zi extends Fu{ //子类
static{
System.out.println(“静态代码块Zi”);
}
{
System.out.println(“构造代码块Zi”);
}

public Fu(){
	System.out.println("构造方法Zi");
}

}

猜你喜欢

转载自blog.csdn.net/qq_30242987/article/details/85246978