黑马程序员技术交流社区

标题: 初始化的时候为什么父类构造要先初始化? [打印本页]

作者: 胡乃锋    时间: 2013-11-17 23:13
标题: 初始化的时候为什么父类构造要先初始化?
本帖最后由 胡乃锋 于 2013-11-18 13:57 编辑

子类继承父类,我创建子类实例的对象为啥父类构造要先初始化啊?
作者: 不抛弃不放弃    时间: 2013-11-17 23:25
因为java虚拟机在加载类的时候,会先加载父类构造函数,再去加载子类的
作者: ┾——黑马    时间: 2013-11-18 09:46
打个比方吧,没有父亲哪来的儿子!java是面向对象的语言,思考问题应该联系到现实生活中来,JVM在加载子类的实现,不先加载父类,它怎么能知道子类从父类继承的哪些东西呢。因为子类是参考父类的
作者: 卑微の小幸福    时间: 2013-11-18 12:18
呵呵在子类实例化是会有个隐藏的super()先去访问父类。啦!
作者: bpsend    时间: 2013-11-18 12:48
因为我们的子类构造方法中可能会使用父类的成员。你想想你在父类继承下来一个国籍属性,然后你在子类构造方法中去用它来制造出一个身份证,你不初始化父类的话是Null123456,初始化父类是中国123456。这是规定,没有为什么。
作者: 木木赤赤    时间: 2013-11-20 11:10
子类在创建实例后,类初始化方法会调用父类的初始化方法,而这种调用会逐级追述,直到java.lang.Object的初始化方法。
都调用构造函数,不过先调用父类构造函数,然后才调用子类构造函数。
所以一般在子类的构造函数中第一条语句就是调用父类构造函数,不过如果你没有在第一条语句显示地调用父类构造函数,那名JAVA会 自动先调用父类的默认无参构造函数,当然这种情况下,你得保证父类必须有无参构造函数。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2