黑马程序员技术交流社区

标题: 构造器问题 [打印本页]

作者: LoveStoned    时间: 2014-11-6 08:17
标题: 构造器问题
为什么构造器想要调用父类的构造器或者本类的重载构造器时一定要把super()和this()写在第一行,而且两个还不能同时出现

作者: 一叶障目    时间: 2014-11-6 08:58
放在第一行是因为:super()和this()都是调用构造函数,而构造函数是用于对象的初始化,初始化操作应该先完成。
不能同时出现:两个语句只能有一个定义在第一行,所以只能出现一个;
因为子类继承至父类,会继承父类的数据,所以子类构造函数运行的时候,会先运行父类的构造函数,看父类是如何对自己的数据进行初始化;
子类的构造函数中都会默认访问父类的空参数的构造函数,即子类构造内都有一个默认super()语句,如果父类中没有空参数的构造函数,在子类的构造函数中,spuer()中要添加参数访问父类中的构造函数,如果子类构造函数中用this来指定调用自己的另外的构造函数,那么被调用的构造函数也会默认访问父类的构造函数。^-^
作者: 想成为黑马    时间: 2014-11-6 09:17
构造器是什么东西,表示我还没有学到这个地方来
作者: 菜鸟一号    时间: 2014-11-6 09:20
不是一定要写啊,它自动调用super()的
作者: LoveStoned    时间: 2014-11-6 09:56
一叶障目 发表于 2014-11-6 08:58
放在第一行是因为:super()和this()都是调用构造函数,而构造函数是用于对象的初始化,初始化操作应该先完 ...

学习了 ,谢谢:lol
作者: LoveStoned    时间: 2014-11-6 09:58
菜鸟一号 发表于 2014-11-6 09:20
不是一定要写啊,它自动调用super()的

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

就是构造函数啊亲
作者: 一叶障目    时间: 2014-11-6 10:08
LoveStoned 发表于 2014-11-6 09:56
学习了 ,谢谢

我也还在学习基础知识,一起加油:)
作者: LoveStoned    时间: 2014-11-6 10:09
一叶障目 发表于 2014-11-6 10:08
我也还在学习基础知识,一起加油

加油:handshake
作者: feng_0207    时间: 2014-11-6 15:06
毕老师视频很详细
作者: 王世虎    时间: 2014-11-7 01:43
简单说:
为什么this和super不能同时存在?---它们只能写在第一行。
为什么必须写在第一行?--------------初始化动作要先做。
作者: Jeik    时间: 2014-11-7 02:01
建议百度一下!这个问题一下还真说不上来
作者: 高昌德    时间: 2014-11-7 07:11
学习,,,,正解
作者: zhangyangLengen    时间: 2014-11-7 07:28
初始化父类的成员要先做。如果不先做,再后来先做,可能出现随意的修改父类的内容了。




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