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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 竹叶君子 中级黑马   /  2015-3-3 18:27  /  2174 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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语句,这是什么情况?求大神指教!!

6 个回复

倒序浏览
视频里是这样讲的:this的两种用法,1用于区分成员边变量和局部变量同名时,2,用于构造函数间调用。
this语句是不能用在一般函数中指的是this()不能用在一般函数中,因为this()是有于构造函数间的调用。你的compare里的this是属于第一种应用,所以是合理的。
回复 使用道具 举报 1 0
为什么不能用啊。。。 我也这么写过 可以啊 (我是小白)
回复 使用道具 举报
本帖最后由 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:29 编辑

this( )这是语句即this方法,我觉得你把语句跟方法弄混了,括号里有参数也是,另外构造函数调用时,它只能出现在构造函数的第一行,也就说构造函数中只能有一个出现在第一行的this()或者super(),super()是父类中的构造方法
this. 中的this不是this方法,只是个关键字,它体表具体的对象本身,super是指向对象中的父类成分,它不能访问子类的特有数据和方法

回复 使用道具 举报
compare()函数中的this是指调用这个函数的对象,而构造函数中的this是指创建对象时将要创建的对象。也就是3楼总结的那个。
面向对象编程是对对象的操作,对象的初始化和对象在何时有什么操作。this关键字只是提供了一个简化的代码表现形式。
回复 使用道具 举报
嗯嗯,明白了,大家分析的很对,是我把this关键字和this()语句搞混了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马