java类加载和初始化顺序
来源:互联网 发布:淘宝店铺首页的作用 编辑:程序博客网 时间:2024/06/05 02:17
下面这是一道携程java工程师的面试题,求输出
public class Base{ private String baseName = "base"; public Base() { callName(); } public void callName() { System. out. println(baseName); } static class Sub extends Base { private String baseName = "sub"; public void callName() { System. out. println (baseName) ; } } public static void main(String[] args) { Base b = new Sub(); }}
这题考得知识点很基础,但一不小心,几年甚至十几年开发经验的老鸟都可能错。这道题考的就是java类的加载以及初始化的先后顺序。
构造器的初始化顺序大概是:父类静态块、子类静态块、父类初始化语句、父类构造器、子类初始化语句、子类构造器。
这道题子类父类都没有静态块,所以先进行的是父类初始化,然后是父类的构造器,父类的构造器调用了一个被子类重载了的方法,所以其实调的是子类的方法,然后悲剧就产生了,因为子类还没有被初始化,baseName还没有被赋值,所以本题的答案是:NULL。
事实上,在构造器里面调用一个可能会被重载的方法,这本身就是一种危险的做法。但这道题出得还是不错的,借此巩固一下java基础!
0 0
- java类加载和初始化顺序
- JAVA基础教程:类加载和初始化顺序
- java类加载和初始化顺序
- java 类加载-初始化顺序
- Java类的加载和初始化顺序分析
- Java类的加载和初始化顺序分析
- java经典面试题(类加载和初始化顺序)
- java类的加载以及初始化顺序
- java类的加载以及初始化顺序
- java类的加载以及初始化顺序
- java类的加载以及初始化顺序
- Java类的加载及初始化顺序
- java类的加载以及初始化顺序
- Java类加载问题:变量初始化顺序
- JAVA类加载(初始化)顺序
- Java类加载及初始化顺序
- java类的加载以及初始化顺序
- java类的加载以及初始化顺序
- 数据结构: 树
- Kerberos认证流程详解
- android APP从后台重启后如何避免异常
- python flask api get时ValueError("No JSON object could be decoded")
- DefaultAnnotationHandlerMapping 和RequestMappingHandlerMapping
- java类加载和初始化顺序
- Unity3D Web Player 无法自动更新的解决思路
- android sdcard各种存储路径解惑
- PJSIP 检测通话过程中对方手机发送过来的in-bnad DTMF(no rfc2833)按键信息
- SQL Server数据库作业备份 命令语句
- HTTP笔记
- 在不需要知道密码的情况下 Hacking MSSQL
- Android中通过观察者(Observer)实现短信事件响应
- web学习2-javabean简单使用