静态代码块、构造代码块、构造方法、@Autowired、@PostConstruct 执行顺序

静态代码块、构造代码块、构造方法、@Autowired、@PostConstruct 执行顺序


执行顺序:

1、父类静态变量和静态代码块(先声明的先执行);
2、子类静态变量和静态代码块(先声明的先执行);
3、父类的变量和代码块(先声明的先执行);
4、父类的构造方法;
5、子类的变量和代码块(先声明的先执行);
6、子类的构造方法。

7.@Autowired

8.@PostConstruct


静态代码块:仅在类加载时执行一次。

构造代码块:创建一次对象,执行一次

静态方法里不能调用类的实例方法,但可以调用构造方法(因为不需要实例)。


Demo

class HelloA {
    static int staticParam = 1;
    int param = 0;

    static {
        System.out.println("static A");
        System.out.println("staticParam=" + staticParam);
    }

    {
        System.out.println("I'm A class");
        System.out.println("param=" + param);
    }

    public HelloA() {
        System.out.println("HelloA");
    }
}
public class HelloB extends HelloA {
    static {
        System.out.println("static B");
    }

    {
        System.out.println("I'm B class");
    }

    public HelloB() {
        System.out.println("HelloB");
    }
}
@Test
public void testStatic() {
	new HelloB();
}

输出



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载!
posted @   musecho  阅读(493)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示