public class HelloA {
public HelloA(){
System.out.println("1.父类的构造方法");
}
{
System.out.println("2.父类的非静态代码块");
}
static{
System.out.println("3.父类的静态代码块");
}
}
public class HelloB extends HelloA{
public HelloB(){
System.out.println("4.子类的构造方法");
}
{
System.out.println("5.子类的非静态代码块");
}
static{
System.out.println("6.子类的静态代码块");
}
public static void main(String[] args){
System.out.println("7.-----------开始------------");
new HelloB();
new HelloB();
System.out.println("8.-----------结束------------");
}
}
这是一道很经典的题目,我自己练习了一下,测试输出结果如下
我来记录一下我自己解题时用到的知识:
1.在进入一个类的时候,先访问这个类的静态代码块
2.父类与子类,先访问父类,后访问子类
3.进入主函数,依次进行访问
4.先访问构造块,再访问构造方法
5.静态代码块有且只打印一次
6.每次创建对象,构造块都要执行