先看代码
public class Test extends Base{
static {
System.out.println("test static");
}
public Test() {
System.out.println("Test constur");
}
public static void main(String[] args) {
new Test();
}
}
class Base{
static {
System.out.println("base static");
}
public Base() {
System.out.println("base constur");
}
}
输出结果
base static
test static
base constur
Test constur
我们分析一下执行顺序:
1.首先扫描一下整体 不难发现 有base 和test 两个class 并且 Base 属于test 的父类,
2.main方法在test中但我们首先加载他的父类base 到方法区,base中出现static 类直接执行 输出 base static
3.随后执行 main所在test类中的static 输出 test static
4.继续进行 执行main方法,但是我们需要注意的是子类可以使用父类的所有方法,也就是说在执行main方法前我们应该将父类——base 中定义的函数等加载出来,也就是我们会将public base 调用并输出 base constur
5.执行main 方法 输出Test costur