Java - 继承(代码块与静态代码块)
2022-06-17 本文已影响0人
aven_kang
public class superTest {
{
System.out.println("代码块");
}
static {
System.out.println("静态代码块");
}
superTest() {
System.out.println("superTest初始化");
}
public static void main(String[] args) {
superTest sup1 = new superTest();
superTest sup2 = new superTest();
}
}
这个是父类,实现了了代码块跟静态代码块,执行顺序是
静态代码块->代码块->构造函数
如果这个时候一个子类继承了superTest,在子类中重写了代码块函数,那么执行的顺序又会是怎么样,先看看子类的代码
public class superSubTest extends superTest{
superSubTest() {
super();
}
public static void main(String[] args) {
{
System.out.println("subTest的代码块");
}
superSubTest sub1 = new superSubTest();
}
}
直接上打印结果吧
静态代码块
subTest的代码块
代码块
superTest初始化
subTest的构造函数
可以看出静态代码块只会执行一次,而代码块函数,是先执行内部函数,再执行父类的代码块,然后执行父类的构造函数,最后执行子类的构造函数