黑马程序员技术交流社区

标题: this关键字的疑问? [打印本页]

作者: 韩军博    时间: 2011-12-12 23:02
标题: this关键字的疑问?
本帖最后由 韩军博 于 2011-12-13 11:20 编辑

this关键字如果是在构造函数中的话,为什么只能做放在第一行?我们有听懂,希望各位详细解释
作者: zclove898    时间: 2011-12-12 23:13
this关键字语句只能定义在构造函数的第一行,因为初始化动作先执行

作者: 杨旭    时间: 2011-12-12 23:31
也许就是java 的语法规则,没有原因
作者: 余松霖    时间: 2011-12-12 23:45
本帖最后由 余松霖 于 2011-12-13 12:04 编辑

因为初始化动作必须要先做,所以只能放在第一行!
作者: 马伟奇    时间: 2011-12-13 07:53
因为this在构造方法中要对变量进行初始化
作者: 冯敏    时间: 2011-12-13 08:04
子类继承父类,必须先执行父类的构造函数,如果把子类的语句放在this()之前,那么又成为父类的构造函数了,
继承:当然先有父类的东西
作者: 常兆鹏    时间: 2011-12-13 09:03
this有两种用法:
1,用于区分成员变量和局部变量中的同名变量。
2,用于构造函数间的调用。
你说的是this用于构造函数间调用的情况。
构造函数在对象建立时就会给对象初始化,对象调用该函数时就会把参数值赋给构造函数内对应的变量,这时如果this()不是第一行,那么接下来执行this时局部变量的值就被this所调用的另外的构造函数给初始化了。就不再是所需要的结果了。
作者: 常兆鹏    时间: 2011-12-13 09:05
视频中day05——12有结合例子的详细说明,多看几遍就会了。
作者: 郝锡强    时间: 2011-12-13 09:43
this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
在构造函数中,调用必须写在继承类的构造函数定义的第一行,不能在构造函数的后面使用
即该动作为第一行才能完成调用动作

作者: 刘博    时间: 2011-12-13 09:46
this 和super方法都只能放在第一行,因为这是甲鱼的屁股.如果你不写默认就是super();
作者: 黑马胡林    时间: 2011-12-13 10:19
this关键字代表自身,super关键字可以在子类中引用父类的内容。 this •使用this关键字引用成员变量。 •使用this关键字在自身构造方法内部引用其他构造方法。 •使用this关键字代表自身类的对象。 •使用this关键字引用成员方法 super •在子类的构造方法内部引用父类的构造方法。 •在子类中调用父类中的成员方法。 •在子类中调用父类中的成员变量。

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

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

作者: 韩军博    时间: 2011-12-13 11:20
谢谢回答,已经解决




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