对象的this引用,减少对象的数量

      Java提供了一个关键字this,this总是指向调用该方法的对象。this关键字最大的作用是让类中一个方法访问该类中的另一个方法或Field。例如定义一个Dog类,这个Dog对象的run方法需要调用它的jump方法。

public class Dog
{
    //定义一个jump方法
    public void jump()
    {
        System.out.println("执行jump方法");
    }
    //定义一个run方法,run方法需要借助jump方法
    public void run()
    {
        Dog d = new Dog();
        d.jump();
        System.out.println("执行run方法")
    }
}
public class DogTest
{
    public static void main (String[] args)
    {
        //创建Dog对象
        Dog dog = new Dog();
        //调用Dog对象的run方法
        dog.run();
    }
}

        这个程序中一共产生了两个Dog对象。在Dog类的run方法中,程序创建一个Dog对象,并使用别名d的引用变量来指向Dog对象;在DogTest的main方法中,程序再次创建了一个Dog对象,并使用别名dog的引用变量来指向该Dog对象。

        这里有个问题,在run方法中调用jump方法时是否一定要创建一个新的Dog对象?答案是否定的,因为当程序调用run方法时,一定会提供一个Dog对象,这样就可以直接使用这个已经存在的Dog对象,而没必要重新创建新的Do对象。

        为此,我们就可以使用this关键字在run方法中调用jump方法。

public class Dog
{
    //定义一个jump方法
    public void jump()
    {
        System.out.println("执行jump方法");
    }
    //定义一个run方法,run方法需要借助jump方法
    public void run()
    {
        //使用this引用调用run()方法的对象
        this.jump();
        System.out.println("执行run方法")
    }
}

上面的方法定义Dog类更符合实际意义。从前一种Dog类定义看,在Dog对象的run方法内重新创建了一个新的Dog对象,并调用它的jump方法,这意味着一个Dog对象的run方法需要依赖另一个Dog对象的jump方法,这不符合逻辑。上面的代码更符合实际情形:当一个Dog对象调用run方法时,run方法需要依赖它自己的jump方法。

猜你喜欢

转载自blog.csdn.net/ty0903csdn/article/details/81118955