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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

父类的构造函数和子类的构造函数有什么联系?父类中有的构造函数,子类都要有吗

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
本帖最后由 ζ_____________ 于 2014-9-24 22:38 编辑

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

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1 很给力!

查看全部评分

回复 使用道具 举报
ζ_____________ 发表于 2014-9-24 22:37
好比当程序执行到创建类对象的时候, 在new XXX() 的时候, 后面的那个()指的就是类的构造函数,如果里面添加 ...

谢谢 很详细
回复 使用道具 举报
对的。。。子类的构造函数首行都隐含super()(父类空参数的构造函数),你也可以制定父类有参的构造函数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马