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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© nihaoshitou 中级黑马   /  2013-5-11 10:00  /  1873 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 nihaoshitou 于 2013-5-11 22:32 编辑

怎么能比较直观的去理解this关键字的用法呢?求指点!!!

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 新人鼓励

查看全部评分

6 个回复

倒序浏览
关键字this
        (1)this关键字代表本类对象的一个引用,谁调用this所在的方法,this就代表谁  
        (2)this的使用场景
                A:用于区分同名成员变量和局部变量;
                B:在定义函数时,该函数内部要用到调用该函数的对象时,因为此时对象还没建立,故this代表此对象
                B:构造函数间调用
                        **这个时候,this(参数)必须作为第一条语句存在。
回复 使用道具 举报
ミ后来我经过梵 发表于 2013-5-11 10:10
关键字this
        (1)this关键字代表本类对象的一个引用,谁调用this所在的方法,this就代表谁  
        (2)this的使用 ...

再想想还有什么可以补充的,super也讲下,回头给你加分
回复 使用道具 举报
本人觉得this关键字主要是在这两个地方用得比较多。
(1)当没有声明一个类的对象时,而又需要使用到这个类的对象的时候,可以用this来代替,这个类的对象来使用。
(2)就是用来区分类属性和局部变量的。就是这个场景,    this.i=i;      你肯定见过。
回复 使用道具 举报
你好,比如说class Demo {
        public static void main(String[] args){
                Demo1 d = new Demo();
                d.show();
        }

}

class Demo1{
        int x = 1;
        public void show(){
                int x = 10 ;
                System.out.println(x);//不加this回复的就是10.
                System.out.println(this.x);//加this回复的就是1.这个只有在同名的情况下才能看的出来。

        }
}

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
曹睿翔 发表于 2013-5-11 10:12
再想想还有什么可以补充的,super也讲下,回头给你加分

 版主果然霸气,来了,请过目。

this和super的区别
                this:代表本类对象的引用。
                super:代表父类的存储空间。



Super关键字  由于子类对象中包含父类对象,因此初始化子类时,最好调用父类的构造函数初始化父类对象。直接父类构造函数的调用可用super关键字,一般格式:  Super([实参列表]) 使用super关键字,可以引用父类的可见成员。在子类成员域与方法出现重名时,可通过super关键字引用父类的成员域和方法。    使用super关键字可以在子类中引用父类中的内容。主要的使用形式有以下几种:

1.在子类的构造方法内部引用父类的构造方法

2.在子类中调用父类中的成员方法

3.在子类中调用父类中的成员变量
使用方法:
     1>用以引用父类定义的属性及方法;
     2>在子类构造器中调用其父类构造器
  1. public  class  Person{
  2.           String  name;
  3.         int   age;
  4.         int   sex;
  5.        
  6.         public  Person(){
  7.                 
  8.         }
  9.        
  10.         public Person(String  name,int  age){
  11.                   this.name = name;
  12.                   this.age = age;
  13.         }

  14.         public  void  play() {
  15.                           System.out.println("play");
  16.         }
  17. }


  18.         public  class  Student  extends  Person{
  19.                    
  20.                    public  Student(){
  21.                
  22.                    }
  23.                    public  Student(String name,int age){
  24.                 super();
  25.                 this.name=name;
  26.                 this.age = age;
  27.                    }
  28.                   public void play(){
  29.                         super.play();
  30.                         System.out.println("Play BasketBall");
  31.                            }

  32.         }

  33.              public  class SuperDemo{
  34.                   public static void main(String[]  args){
  35.                   Person  stu = new Student("zhangsan'',13);
  36.                   stu.play();
  37.                  }
  38.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
李瑞 中级黑马 2013-5-11 11:30:20
7#
this代表当前引用对象的地址指针
常用方法:
1.局部变量与成员变量重名时,若是调用此变量,默认是调用局部变量,若是调用成员变量需要加this
2.构造函数中相互调用需要用this调用
注意:因为this 代表的是一个对象,所以在静态函数中不可使用,因为静态函数随着类的加载而加载,优先于对象

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马