子类构造器会默认调用 父类的无参构造器....假如我写了一个有参数的 构造器,那么是不是这个类就没有无参构造器了. 因为有了构造器就不会虚拟机自动生成

首先,正如以上各位仁兄所说,子类构造器会默认调用 父类的无参构造器,如果父类没有无参构造器,则需在子类构造器的第一行显式地调用父类的其他构造器。

其次,从继承的思想来看,你继承一个类,就相当于扩展一个类,形成一个更为特殊的类,但经常,我们需要将子类向上转型为基类,以便使用或达到其他各种目的。

这时,如果你生成子类对象时没有调用父类的构造器,那么,我们在使用父类的一些成员变量的时候,就会报变量未初始化的错误。请记住,变量初始化总是在构造器调用之前完成!



引用 6 楼 u013803262 的回复:
先有父类才有子类 new出子类的实例 时执行的构造方法会默认调用父类的不带参数的构造方法

 

引用 2 楼 rumlee 的回复:
没有为什么,设计就是这样。

默认情况下,如果没有显式调用父类构造器,则调用默认的那一个。而如果你父类已经实现了其他构造器了,则不存在默认构造器了,所以就没法调用默认的了。
首先,问你,子类继承父类是不是就可以拥有父类的属性了,既然可以访问到父类的属性,那说明,在你new 子类的时候,相应的父类的属性也就拿到了,那就是说,父类也被new了一个对象出来,不然你怎么用你new出来的子类对象去访问父类属性,所以。。。

posted on 2016-07-20 22:16  雪的心  阅读(568)  评论(0编辑  收藏  举报

导航