java 代码块/静态代码块 加载顺序
发布日期:2021-05-07 10:30:18 浏览次数:21 分类:精选文章

本文共 1187 字,大约阅读时间需要 3 分钟。

  • 在有继承关系下,静态代码块,静态属性初始化,普通代码块,普通属性初始化,构造方法的调用顺序如下

    1. 父类的静态代码块和静态属性(优先级一样,按定义顺序执行)
    2. 子类的静态代码块和静态属性(优先级一样,按定义顺序执行)
    3. 父类的普通代码块和普通属性初始化(优先级一样,按定义顺序执行)
    4. 父类的构造方法
    5. 子类的普通代码块和普通属性初始化(优先级一样,按定义顺序执行)
    6. 子类的构造方法
  • 静态代码块只能调用静态成员(静态属性和静态方法),普通代码块可以调用任意成员

public class CodeBlockDetail03 {       public static void main(String[] args) {           new BBB();    }}class AAA {       {           System.out.println("AAA普通代码块");    }    static {           System.out.println("AAAStatic代码块");    }    private static int a = getA();    public AAA() {           System.out.println("AAA构造器");    }    public static int getA() {           System.out.println("AAA的静态属性被初始化了");        return 10;    }}class BBB extends AAA {       private int b = getB();    private static int bb = getBB();    static {           System.out.println("BBB的静态代码块");    }    {           System.out.println("BBB的普通代码块");    }    public BBB() {           System.out.println("BBB构造器");    }    public int getB() {           System.out.println("BBB的普通属性");        return 10;    }    public static int getBB() {           System.out.println("BBB的静态属性");        return 10;    }}AAAStatic代码块AAA的静态属性被初始化了BBB的静态属性BBB的静态代码块AAA普通代码块AAA构造器BBB的普通属性BBB的普通代码块BBB构造器
上一篇:java 单例模式(饿汉模式和懒汉模式)
下一篇:java 静态代码块

发表评论

最新留言

很好
[***.229.124.182]2025年03月22日 11时28分02秒