前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >构造代码块、静态代码块、构造方法的执行顺序

构造代码块、静态代码块、构造方法的执行顺序

原创
作者头像
真率
发布2024-07-05 13:26:52
1270
发布2024-07-05 13:26:52
举报
文章被收录于专栏:Java

请写出如下代码的运行结果:

代码语言:javascript
复制
public class ClassA {
    public ClassA(){
        System.out.println("construct ClassA");
    }
    static {
        System.out.println("Class A");
    }
    {
        System.out.println("in ClassA");
    }
}
public class ClassB extends ClassA{
    public ClassB(){
        System.out.println("construct ClassB");
    }
    static {
        System.out.println("Class B");
    }
    {
        System.out.println("in ClassB");
    }
    public static void main(String[] args) {
        new ClassB();
    }
}

打印结果为

ClassA

ClassB

in ClassA

construct ClassA

in ClassB

construct ClassB // 构造方法

分析

  • 静态代码块,jvm加载类时执行,只执行一次
  • 构造代码块,创建对象时执行,顺序优先于构造函数
  • 子类初始化时,会调用父类的构造代码块和构造方法,以初始化继承的父类属性,但不会创建父类对象

总结

执行顺序:静态代码块>构造代码块>构造方法>普通代码块


参考文献

https://www.cnblogs.com/ysocean/p/8194428.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档