上一篇文章中,进行了Java代码块的使用(点击查看),这里对代码块在父子类继承关系中,进一步研究一下代码块的执行顺序。
代码用例:
父类,定义了静态代码块,构造代码块,构造方法。
package cn.zealon.modifier.codeblock;
/**
* 父类
* @auther: Zealon
*/
public abstract class CodeBlock {
static {
System.out.println("执行abstract CodeBlock静态代码块.");
}
{
System.out.println("执行abstract CodeBlock构造代码块.");
}
public CodeBlock(){
System.out.println("执行abstract CodeBlock构造方法.");
}
}
子类继承父类,同时也定义了静态代码块,构造代码块,构造方法。
package cn.zealon.modifier.codeblock;
/**
* 子类继承父类代码块执行顺序的综合用例
* @auther: Zealon
*/
public class UseCodeBlock4 extends CodeBlock {
static {
System.out.println("执行静态代码块.");
}
{
System.out.println("执行构造代码块.");
}
public UseCodeBlock4(){
System.out.println("执行构造方法.");
}
public static void main(String[] args){
new UseCodeBlock4();
}
}
运行子类main方法,来观察下结果:
执行abstract CodeBlock静态代码块.
执行静态代码块.
执行abstract CodeBlock构造代码块.
执行abstract CodeBlock构造方法.
执行构造代码块.
执行构造方法.
说明了,子类继承父类,在子类类对象被创建完成的时候,会先执行父类中的代码块、构造方法,再执行自己的代码块,构造方法。由于静态构造方法不需要创建对象就可以运行,所以最先运行的是静态构造代码块,然后才是构造代码块,最后执行构造方法。
⭐ 总结:所以在父子类中代码块的执行顺序为:
父类静态代码块 > 子类静态代码块 > 父类构造代码块 > 父类构造方法 > 子类构造代码块 > 子类构造方法
作者: Zealon
崇尚简单,一切简单自然的事物都是美好的。