黑马程序员技术交流社区
标题:
super()或者this(): 为什么一定要定义在第一行?
[打印本页]
作者:
小鱼儿211
时间:
2015-10-23 09:34
标题:
super()或者this(): 为什么一定要定义在第一行?
super()和this()不可以同时出现在构造函数中,为什么一定要定义在第一行?
作者:
朦胧色彩
时间:
2015-10-23 12:43
不能同时出现,是因为this和super都要定义在第一行,所以只能有一个;
那么为什么要定义在第一行呢?
先说super,因为子类继承了父类的属性和方法,所以在先初始化父类的属性和方法,这样子类才可以初始化自己特有的,因为java中不允许调用没有初始化的成员。
this就是调用本类的其他构造函数,在其他构造函数中也有默认的super(),或者自定义了带参的super,这样就初始化了父类的成员了,所以写了this的构造函数不能再写super了,因为实例化一个对象运行两次super是不安全的。this放在第一行,也是因为要先初始化父类和this代表的构造函数先,因为当前构造函数可能用到那些成员,所以那些成员得要先初始化。
希望可以帮到你!
作者:
小鱼儿211
时间:
2015-10-23 13:54
不错不错,谢谢!
作者:
小鱼儿211
时间:
2015-10-23 13:55
朦胧色彩 发表于 2015-10-23 12:43
不能同时出现,是因为this和super都要定义在第一行,所以只能有一个;
那么为什么要定义在第一行呢?
先说s ...
不错不错,谢谢!
作者:
洋葱头头
时间:
2015-10-23 14:20
因为要第一个执行
作者:
bukai123
时间:
2015-10-23 16:29
学习了,之前真没关注过细节
作者:
android小学徒
时间:
2015-10-23 16:54
二楼正解。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2