java中对象的this引用

来源:互联网 发布:二二一数据有限公司 编辑:程序博客网 时间:2024/05/16 06:14

java提供啦一个this关键字,this关键字总是指向调用该方法的对象。
根据this位置的不同,this位置默认引用有两种情形。
- 构造器中引用该构造器正在初始化的对象。
- 在方法中引用调用该方法的对象。
假设定义啦一个Dog()类,这个Dog()对象的run()方法需要调用它的jump()方法,
那么该如何做?是否该定义如下的Dog()类呢?

  public class Dog()  
{ public void jump()
{ System.out.println(“正在执行jump方法”);
}
//定义一个run()方法,run()需要借助jump()
public void run()
{
Dog d=new Dog();
d.jump();
System.out.println(“正在执行run方法”);
}
}
那我们在提供一个程序来创建Dog()对象,并调用该对象的run()方法。
 public class DogTest()  
{ public static void main(String [] args)
//调用Dog对象的run()方法
dog.run();
}
}
在上面的程序中,一共产生啦两个Dog对象,
在DogTest()的main()中程序再次创建了一个Dog对象。

那么
- 问1:在run()调用jump()时是否一定需要一个Dog对象?
- 问2:是否一定需要重新创建一个Dog对象? 答案1是肯定的,
答案2是否定的,因为当程序调用run方法时,一定会提供一个Dog对象,
这样就可以直接使用这个已经存在的Dog对象,而无须重新创建Dog对象。
因此需要在run()方法中获得调用该方法的对象。通过this 关键字可以满足这个要求 this它所代表的对象不确定但它的类型是确定的:他所代表的只能是当前类的实例;
只有当这个方法被调用时他所代表的对象才被确定下来谁在调用这个方法,this就代表谁。

    //定义一个run()方法,run()需要借助jump() 
public void run()
{//使用this引用调用run()的对象
this.jump();
System.out.println(“正在执行run方法”);
}
采用上面方法定义Dog类更符合实际意义。
在现实世界中,对象的一个方法依赖于另一个方法的情形非常常见:例如,吃饭方法依赖于拿筷子方法,
因此java允许对象的一个成员直接调用另一个成员。
可以省略this前缀。将上面的run()方法改为如下也是正确的
   //定义一个run()方法,run()需要借助jump() 
public void run()
{//使用this引用调用run()的对象
jump();
System.out.println(“正在执行run方法”);
}

0 0
原创粉丝点击