A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 胡乃锋 于 2013-11-18 13:57 编辑

子类继承父类,我创建子类实例的对象为啥父类构造要先初始化啊?

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

5 个回复

正序浏览
子类在创建实例后,类初始化方法会调用父类的初始化方法,而这种调用会逐级追述,直到java.lang.Object的初始化方法。
都调用构造函数,不过先调用父类构造函数,然后才调用子类构造函数。
所以一般在子类的构造函数中第一条语句就是调用父类构造函数,不过如果你没有在第一条语句显示地调用父类构造函数,那名JAVA会 自动先调用父类的默认无参构造函数,当然这种情况下,你得保证父类必须有无参构造函数。
回复 使用道具 举报
因为我们的子类构造方法中可能会使用父类的成员。你想想你在父类继承下来一个国籍属性,然后你在子类构造方法中去用它来制造出一个身份证,你不初始化父类的话是Null123456,初始化父类是中国123456。这是规定,没有为什么。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 这个回答我喜欢

查看全部评分

回复 使用道具 举报
呵呵在子类实例化是会有个隐藏的super()先去访问父类。啦!
回复 使用道具 举报
打个比方吧,没有父亲哪来的儿子!java是面向对象的语言,思考问题应该联系到现实生活中来,JVM在加载子类的实现,不先加载父类,它怎么能知道子类从父类继承的哪些东西呢。因为子类是参考父类的

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
因为java虚拟机在加载类的时候,会先加载父类构造函数,再去加载子类的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马