继承--类中加载顺序
1.题目介绍
关于类中加载顺序的说法,以下说法正确的有(A,B,D)
A.父类中的静态代码块先于子类中的静态代码块
B.父类中的构造方法先于子类中的构造方法
C.子类中的非静态代码块会执行,而父类不会
D.子类中的构造块先于子类中的构造方法
2.题解
参考链接:Java代码块与构造方法执行顺序
静态代码块、构造代码块、构造函数 执行顺序依次为:
父类静态代码块=》子类静态代码块=》父类构造代码块=》父类构造方法=》子类构造代码块=》子类构造方法
思路
A. 父类中的静态代码块先于子类中的静态代码块:静态代码块在类加载时执行,而子类的加载依赖于父类的加载,因此父类的静态代码块会先执行。
B. 父类中的构造方法先于子类中的构造方法:在创建子类对象时,首先要调用父类的构造方法,然后再调用子类的构造方法。
当父类存在无参数构造函数时,JVM (我安装的是JDK1.8) 会在子类的构造函数中自动添加隐式的 super();
目的是为了确保构造子类前,能成功地构造父类。也就是说,既然子类继承了父类的,只有当父类确实存在,子类才能够存在。
C. 子类中的非静态代码块会执行,而父类不会:这是不准确的。非静态代码块在对象创建时执行,而父类和子类的非静态代码块都会在对象创建时执行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了