记录下面试里面遇到的一些java盲区,一方面扫描自己的知识盲区,一方面也可以给后面面试的朋友一些警示,以免面试的时候出现不知道的尴尬情况。提出问题:父类静态属性,父类属性,父类构造方法,子类静态属性, 子类属性,子类构造方法的初始化顺序?提出猜想:父类静态属性=> 父类属性 ...
记录下面试里面遇到的一些java盲区,一方面扫描自己的知识盲区,一方面也可以给后面面试的朋友一些警示,以免面试的时候出现不知道的尴尬情况。
提出问题:父类静态属性,父类属性,父类构造方法,子类静态属性, 子类属性,子类构造方法的初始化顺序?
- 提出猜想:父类静态属性=> 父类属性=> 父类构造方法= > 子类静态属性=> 子类属性=> 子类构造方法?
- 方**:实践是检验真理的唯一标准。
初步设计类的结构uml。
直接上源代码
/** * 轮子类 */public class Wheel { public Wheel(String name){ System.out.println(name); }}
//汽车public class Car { static Wheel backWheel = new Wheel("static: Car => backWheel"); Wheel forwordWheel = new Wheel("Car => forwordWheel"); Car(){ System.out.println("Car"); }}
//奔驰汽车public class BenzCar extends Car{ static Wheel backWheel = new Wheel("static: BenzCar = > backWheel"); Wheel forwordWheel = new Wheel("forwordWheel = >"); BenzCar(){ System.out.println("BenzCar"); }}
//测试类public class Main { public static void main(String[] args) { System.out.println("====================>"); BenzCar benzCar = new BenzCar(); System.out.println("====================>"); }}
输出结果:有点出乎意料。
====================>static: Car => backWheelstatic: BenzCar = > backWheelCar => forwordWheelCarforwordWheel = >BenzCar====================>
java学习群669823128
结论:猜想错误,父类静态属性=> 子类静态属性 => 父类属性 => 父类构造方法 => 子类属性 => 子类构造方法。 而且有一个细节,static 变量初始化并非一开始就初始化的。而是实例化的时候。static属性才开始初始化的。
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:java面试扫盲:对象初始化顺序(真的未必能答对)
关键词:JAVA
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。