黑马程序员技术交流社区

标题: this关键字和对象的关系 [打印本页]

作者: 黑白小調°    时间: 2014-1-14 08:23
标题: this关键字和对象的关系
this关键字和对象都可以调用成员变量和成员方法,那么他们之间有什么样的关系呢?
作者: xu6148152    时间: 2014-1-14 08:33
本帖最后由 xu6148152 于 2014-1-14 08:37 编辑

this指向当前的对象。
如class A
{     private int num=0;
     A(int num)
     {
          this.num=num;//因为类的属性num和构造函数的参数num一样,所以要使用this来访问类的num.
     }
}

A a=new A();
这个时候this就跟a指向同一个内存地址。
this关键字一般在类的内部使用,表示当前的对象。

作者: 高丽华    时间: 2014-1-14 10:26
this可以引用本类的对象,this是用于区分局部变量和成员变量的同名情况。当定义类中功能时,该函数内部要用到该功能的对象时,时用this来表示这个对象,但凡奔雷功能内部使用了本类对象,都用this来表示。
对象可以new其他类的对象。

作者: xiaochen33520    时间: 2014-1-14 17:30
很简单,通过类来创建对象,而且这个类可以创建N个对象,每个对象的哈希码值也是不一样的,除非直接以等号的形式赋值,比如:
Person p = new Person();
Person p2 = p;
那么p和p2所指向的哈希码值是一样的,也就是说,他们指向同一个对象。
关于this和对象的关系,this代表本类对象的引用(也可以说成this是所在函数所属对象的引用),也就是说哪个对象调用了this所在的函数,那么this就代表哪个对象。
当成员变量和传入的局部变量同名时,那么可以用this来区分,比如
public static void main(String[] args)
{
     String name="张三";
}
class Person
{
     private String name;
     public void setName(String name)
     {
          this.name = name;
    }
}
this也可以用于在构造函数中用来调用其他的构造函数,比如
class Person()
{
    String name;
    Person()
    {
       this(name);//必须定义在第一行,因为初始化动作要先完成,这个是规则。
    }
    Person(String name)
    {
       this.name = name;
    }
}
作者: 姬运涛    时间: 2014-1-15 17:40
this关键字和对象都可以调用成员变量和成员方法,那么他们之间有什么样的关系呢?
  这个问题:对象调用成员变量和成员方法时,这里构造函数的成员变量和成员方法和要传的值不能相同,如果相同则必须要用到this关键字,this用来区分局部变量和成员变量,否则系统都是为局部变量。这里this代表主函数中那个建立的对象调用,那么this就代表调用的那个。
例:
class Perason
{
       private   int age;
       private String name;
       Person(String name,int age)  
      {.
              this.name=name;
              this.age=age;
      }                  
}
class Person1
{
     public static void main(string [] args)
     {
            Person p=new Person("zhangsan",20)
     }
}
这时当建立对象p时,this就代表对象p,总之对于提问者的问题就是this用于区分成员变量和所传的局部变量同名时的问题




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