黑马程序员技术交流社区
标题:
this关键字的使用范围
[打印本页]
作者:
竹叶君子
时间:
2015-3-3 18:27
标题:
this关键字的使用范围
class Person
{
private int age;
Person(int age) //构造函数
{
this.age = age;
}
public boolean compare(Person p) //一般的年龄比较函数
{
return this.age==p.age; //这个不是构造函数,但是也可以用this语句
}
}
class PersonDemo
{
public static void main(String[] args) //主函数
{
Person p1 = new Person(20); //创建对象
Person p2 = new Person(25);
boolean b = p1.compare(p2);
System.out.println(b);
}
}
复制代码
毕老师在讲解this关键字时,最后提到this语句不能用在一般的函数中,只能用在构造函数间,但是我整理笔记时发现上述的例子中的
compare函数中也用到了this语句,这是什么情况?求大神指教!!
作者:
zfgrinm
时间:
2015-3-3 19:02
视频里是这样讲的:this的两种用法,1用于区分成员边变量和局部变量同名时,2,用于构造函数间调用。
this语句是不能用在一般函数中指的是this()不能用在一般函数中,因为this()是有于构造函数间的调用。你的compare里的this是属于第一种应用,所以是合理的。
作者:
女神从来不加班
时间:
2015-3-3 19:58
为什么不能用啊。。。 我也这么写过 可以啊 (我是小白)
作者:
yangruijing
时间:
2015-3-3 20:15
本帖最后由 yangruijing 于 2015-3-3 20:18 编辑
在普通方法中,this总是指向调用该方法的对象。在构造方法中,this总是指向正要初始化的对象。
this不能用于static方法中。还可以用来调用其他的构造方法。
this代表它所在函数所属对象的引用,哪个对象在调用this所在的函数,this就代表哪个对象。
this关键字的应用。在定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this表示这个对象,但凡本类功能内部使用到了本类对象,都用this表示。
this关键字在构造函数间调用:this();用于构造函数间的调用。通过this调用构造方法,必须位于第一句。
public boolean compare(Person p) //一般的年龄比较函数
{
return this.age==p.age; //这个不是构造函数,但是也可以用this语句
}
在你程序的compare方法中this表示的Person对象
作者:
z47057554
时间:
2015-3-3 20:19
本帖最后由 z47057554 于 2015-3-3 20:29 编辑
this( )这是语句即this方法,我觉得你把语句跟方法弄混了,括号里有参数也是,另外构造函数调用时,它只能出现在构造函数的第一行,也就说构造函数中只能有一个出现在第一行的this()或者super(),super()是父类中的构造方法
this. 中的this不是this方法,只是个关键字,它体表具体的对象本身,super是指向对象中的父类成分,它不能访问子类的特有数据和方法
作者:
IT小白12
时间:
2015-3-3 20:36
compare()函数中的this是指调用这个函数的对象,而构造函数中的this是指创建对象时将要创建的对象。也就是3楼总结的那个。
面向对象编程是对对象的操作,对象的初始化和对象在何时有什么操作。this关键字只是提供了一个简化的代码表现形式。
作者:
竹叶君子
时间:
2015-3-3 22:34
嗯嗯,明白了,大家分析的很对,是我把this关键字和this()语句搞混了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2