向上飞刘 2022-01-30 12:06 采纳率: 0%
浏览 33

java类加载执行顺序

问题相关代码,请勿粘贴截图
static class Father {
    public static int a = 1;

    static {
        System.out.println("执行father static object a=" + a);
        a = 2;
    }

    {
        System.out.println("执行 father object a=" + a);
    }

    public Father() {
        System.out.println("执行 Father construct a=" + a);
        a = 6;
    }
}

static class Son extends Father {
    static {
        System.out.println("执行 Son static object a=" + a);
        a = 3;
    }

    {
        System.out.println("执行 Son object a=" + a);
    }

    public Son() {
        System.out.println("执行 Son construct a=" + a);
        a = 4;
    }
}

@Test
public void testLoad() {

// Father father =new Son();
System.out.println(Son.a);
}

运行结果及报错内容

代码输出2, 说明只执行了父类的静态代码块,子类的静态代码块为啥不执行

  • 写回答

3条回答 默认 最新

  • Mymel_晗 CSDN实力新星 2022-01-30 12:26
    关注

    静态代码块在类加载的时候只会执行一次~子类继承父类,会先执行父类的代码块。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月30日

悬赏问题

  • ¥15 pyqt5tools安装失败
  • ¥15 mmdetection
  • ¥15 nginx代理报502的错误
  • ¥100 当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧
  • ¥15 图示五个参数的模型校正是用什么方法做出来的。如何建立其他模型
  • ¥100 描述一下元器件的基本功能,pcba板的基本原理
  • ¥15 STM32无法向设备写入固件
  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果