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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© LoveStoned 中级黑马   /  2014-11-6 08:17  /  1348 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么构造器想要调用父类的构造器或者本类的重载构造器时一定要把super()和this()写在第一行,而且两个还不能同时出现

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

13 个回复

倒序浏览
放在第一行是因为:super()和this()都是调用构造函数,而构造函数是用于对象的初始化,初始化操作应该先完成。
不能同时出现:两个语句只能有一个定义在第一行,所以只能出现一个;
因为子类继承至父类,会继承父类的数据,所以子类构造函数运行的时候,会先运行父类的构造函数,看父类是如何对自己的数据进行初始化;
子类的构造函数中都会默认访问父类的空参数的构造函数,即子类构造内都有一个默认super()语句,如果父类中没有空参数的构造函数,在子类的构造函数中,spuer()中要添加参数访问父类中的构造函数,如果子类构造函数中用this来指定调用自己的另外的构造函数,那么被调用的构造函数也会默认访问父类的构造函数。^-^

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

回复 使用道具 举报
构造器是什么东西,表示我还没有学到这个地方来
回复 使用道具 举报
不是一定要写啊,它自动调用super()的
回复 使用道具 举报
一叶障目 发表于 2014-11-6 08:58
放在第一行是因为:super()和this()都是调用构造函数,而构造函数是用于对象的初始化,初始化操作应该先完 ...

学习了 ,谢谢:lol
回复 使用道具 举报
菜鸟一号 发表于 2014-11-6 09:20
不是一定要写啊,它自动调用super()的

抱歉  我这里的super()和this()不是指空参数的,而是泛指父类和本类的所有构造函数,我表达不当,2L正解。
回复 使用道具 举报
想成为黑马 发表于 2014-11-6 09:17
构造器是什么东西,表示我还没有学到这个地方来

就是构造函数啊亲
回复 使用道具 举报

我也还在学习基础知识,一起加油:)
回复 使用道具 举报
一叶障目 发表于 2014-11-6 10:08
我也还在学习基础知识,一起加油

加油:handshake
回复 使用道具 举报
毕老师视频很详细
回复 使用道具 举报
简单说:
为什么this和super不能同时存在?---它们只能写在第一行。
为什么必须写在第一行?--------------初始化动作要先做。
回复 使用道具 举报
Jeik 中级黑马 2014-11-7 02:01:42
12#
建议百度一下!这个问题一下还真说不上来
回复 使用道具 举报
学习,,,,正解
回复 使用道具 举报
初始化父类的成员要先做。如果不先做,再后来先做,可能出现随意的修改父类的内容了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马