黑马程序员技术交流社区

标题: 父类的构造函数和子类的构造函数有什么联系? [打印本页]

作者: weiyi    时间: 2014-9-24 20:48
标题: 父类的构造函数和子类的构造函数有什么联系?
父类的构造函数和子类的构造函数有什么联系?父类中有的构造函数,子类都要有吗

作者: ζ_____________    时间: 2014-9-24 22:37
本帖最后由 ζ_____________ 于 2014-9-24 22:38 编辑

好比当程序执行到创建类对象的时候, 在new XXX() 的时候, 后面的那个()指的就是类的构造函数,如果里面添加了对应的参数,就会到对应参数的类的构造函数中去进行初始化. 但是!  如果这个类 继承了某个类之后(该类就为子类),在调用到构造函数的时候, 在显示初始化之前会调用一次默认的super(),这个super() 指向的就是父类的空构造函数的初始化.当然,这个super()也是可以自己定义参数的,但是父类也必须要有相同参数的构造函数.  所以执行顺序是这样的:
new()>>>子类构造函数>>>默认初始化>>>super()>>>父类构造函数>>>父类初始化(其实父类在初始化中默认也有个super(),如果没有继承的话super()指向的就是obj)>>>子类显示初始化(只考虑构造函数的情况下,静态代码块等的暂时不做考虑^^)
作者: weiyi    时间: 2014-9-25 10:17
ζ_____________ 发表于 2014-9-24 22:37
好比当程序执行到创建类对象的时候, 在new XXX() 的时候, 后面的那个()指的就是类的构造函数,如果里面添加 ...

谢谢 很详细
作者: EDDY_Liang    时间: 2014-9-25 15:34
对的。。。子类的构造函数首行都隐含super()(父类空参数的构造函数),你也可以制定父类有参的构造函数




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