当我们构建一个函数时,有两个同类型的对象,分别叫做a,b我们如何同时调用同一个方法,如果我们只定义了一个方法,a和b同时调用它,怎样知道到底是a调用还是b在调用?
为了能够简便的语法来写代码的话,编译器会为我们完成一些幕后的操作,就是第一个自变量传递给方法,而且那个自变量是准备操作的那个对象的句柄。
函数名.方法名(变量1,变量1的值);
函数名.方法名(变量2,变量2的值);
然而这只是内部的表达式,我们并不可以这样的书写代码让编译器去接受它。
this关键字可为已调用了其他方法的的那个对象生成相应的句柄。this关键字只能用于那些特殊的类——需要明确使用的当前的对象的句柄。
public class Leaf {
private int i = 0;
Leaf increment(){
i++;
return this;
/**
* 通过this关键字返回当前对象的句柄,
* 方便对同一个对象执行多项操作
*/
}
void print(){
System.out.println("i=" + i);
}
public static void main(String[] args){
Leaf x =new Leaf();
x.increment().increment().increment().print();
}
}
由于increment()通过this关键字返回当前对象的句柄,所以我们可以很方便地对同一个对象进行多项操作。