java 父类初始化_java中子类继承父类,实例化子类前要先为父类初始化的问题~...

它既是工作原理,也是语言特性或语言层面上的基本要求。它本身不是一个操作指令或语句。

A a = new B();

这个操作里当进行到赋值给A a时,实例化工作已经全部圆满结束,跟“跟子类实例化之前必须先实例化父类”没关系了。

一般来说,我们可以不用了解这句话也通常不影响我们的编程工作,但在某些特殊情况下可能会踩坑(我自己就踩过),应当注意。

比如:public abstract class A

{

public A()

{

OnInit();

}

public abstract void OnInit();

}

public class B extends

{

X x=new X();

@Override

public void OnInit()

{

x.XXX();//Error!因为A构造方法会调用此方法,此时A的空间还没初始完毕,X x=new X();还没执行。于是x是个空引用。

}

}

除此之外,代码中体现这个语言特性的机会很少。

或者说,要很直白的体现“子类实例化之前必须先实例化父类”除非把实例化的过程拖得很长,使得对象的实例化迟迟维持在半成品状态,这显然不是个好的设计。这意味着,如果非要“体现”,那通常这就是一个坑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值