黑马程序员技术交流社区

标题: this关键字的使用范围 [打印本页]

作者: 竹叶君子    时间: 2015-3-3 18:27
标题: this关键字的使用范围
  1. class Person
  2. {
  3.        private int age;
  4.       Person(int age)              //构造函数
  5.          {
  6.             this.age = age;
  7.           }       
  8.       public boolean compare(Person p)      //一般的年龄比较函数
  9.           {
  10.              return this.age==p.age;       //这个不是构造函数,但是也可以用this语句
  11.           }
  12. }
  13. class PersonDemo
  14. {
  15.      public static void main(String[] args)          //主函数
  16.       {
  17.            Person p1 = new Person(20);      //创建对象
  18.            Person p2 = new Person(25);
  19.            boolean b = p1.compare(p2);
  20.            System.out.println(b);
  21.        }
  22. }
复制代码
毕老师在讲解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