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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩军博 黑马帝   /  2011-12-12 23:02  /  3032 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 韩军博 于 2011-12-13 11:20 编辑

this关键字如果是在构造函数中的话,为什么只能做放在第一行?我们有听懂,希望各位详细解释

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

11 个回复

倒序浏览
this关键字语句只能定义在构造函数的第一行,因为初始化动作先执行
回复 使用道具 举报
杨旭 黑马帝 2011-12-12 23:31:01
藤椅
也许就是java 的语法规则,没有原因
回复 使用道具 举报
本帖最后由 余松霖 于 2011-12-13 12:04 编辑

因为初始化动作必须要先做,所以只能放在第一行!
回复 使用道具 举报
因为this在构造方法中要对变量进行初始化
回复 使用道具 举报
冯敏 黑马帝 2011-12-13 08:04:45
地板
子类继承父类,必须先执行父类的构造函数,如果把子类的语句放在this()之前,那么又成为父类的构造函数了,
继承:当然先有父类的东西
回复 使用道具 举报
常兆鹏 黑马帝 2011-12-13 09:03:48
7#
this有两种用法:
1,用于区分成员变量和局部变量中的同名变量。
2,用于构造函数间的调用。
你说的是this用于构造函数间调用的情况。
构造函数在对象建立时就会给对象初始化,对象调用该函数时就会把参数值赋给构造函数内对应的变量,这时如果this()不是第一行,那么接下来执行this时局部变量的值就被this所调用的另外的构造函数给初始化了。就不再是所需要的结果了。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
常兆鹏 黑马帝 2011-12-13 09:05:07
8#
视频中day05——12有结合例子的详细说明,多看几遍就会了。
回复 使用道具 举报
郝锡强 黑马帝 2011-12-13 09:43:07
9#
this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
在构造函数中,调用必须写在继承类的构造函数定义的第一行,不能在构造函数的后面使用
即该动作为第一行才能完成调用动作

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
刘博 黑马帝 2011-12-13 09:46:13
10#
this 和super方法都只能放在第一行,因为这是甲鱼的屁股.如果你不写默认就是super();

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
this关键字代表自身,super关键字可以在子类中引用父类的内容。 this •使用this关键字引用成员变量。 •使用this关键字在自身构造方法内部引用其他构造方法。 •使用this关键字代表自身类的对象。 •使用this关键字引用成员方法 super •在子类的构造方法内部引用父类的构造方法。 •在子类中调用父类中的成员方法。 •在子类中调用父类中的成员变量。

Super调用超类的构造方法,如多层继承中的构造方法的调用顺序
使用super调用超类被子类覆盖的方法;
使用super访问被子类隐藏的变量;

This,将对象自己作为参数,调用别的方法;
当方法的局部变量隐藏成变量时,利用this引用成员变量;
在构造方函数内调用另一个构造函数;

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
韩军博 黑马帝 2011-12-13 11:20:25
12#
谢谢回答,已经解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马