public class Leaf{
int i=0;
Leaf (int i) {
this.i=i;
}
Leaf increament(){
i++;
return this;//这是什么意思呢?return this得到的是什么呢?
}
void print (){
System.out.println("i = "+i);
}
public static void main (String[] args){
Leaf leaf = new Leaf (100);
leaf.increament().increament().print();//该处不理解
}
}文中标记的return this;//这是什么意思呢?return this得到的是什么呢?在一个类中定义该类类型的方法,我表示很不理解。另外,leaf.increament().increament().print();//该处不理解——这里连续调用两次increament这个方法,没掉用一次的作用是让i递增1,但是该方法的返回值类型是Leaf,怎么可以直接打印呢?
int i=0;
Leaf (int i) {
this.i=i;
}
Leaf increament(){
i++;
return this;//这是什么意思呢?return this得到的是什么呢?
}
void print (){
System.out.println("i = "+i);
}
public static void main (String[] args){
Leaf leaf = new Leaf (100);
leaf.increament().increament().print();//该处不理解
}
}文中标记的return this;//这是什么意思呢?return this得到的是什么呢?在一个类中定义该类类型的方法,我表示很不理解。另外,leaf.increament().increament().print();//该处不理解——这里连续调用两次increament这个方法,没掉用一次的作用是让i递增1,但是该方法的返回值类型是Leaf,怎么可以直接打印呢?
相当于
leaf.increament();
leaf.increament();
leaf.print();
第一个return this 应该就是返回当前Leaf对象 i用于计数;
leaf.increament().increament().print();//这个我还真是第一次见 不知是何用意
leaf.increament().increament().print();
相当于
leaf.increament();
leaf.increament();
leaf.print();
第一次调用increament方法可以得到leaf的对象,然后用这个retrun this得到的对象继续 调用
该对象的increament方法,继续返回leaf的对象然后再调用返回的对象的print方法------
第一步,Leaf leaf1 = leaf.increament();//用Leaf对象来接收increament方法的返回值,leaf
的成员i等于101
第二步,Leaf leaf2 = leaf1.increament();//用Leaf对象来接收increament方法的返回值,leaf
的成员i等于102
第三步,leaf2.print();//打印出leaf2的i,102
this 指的是指向Leaf对象的一个引用。假如 Leaf l = new Leaf(); 那么这个this就相当于l。
leaf.increament().increament().print();//该处不理解
相当于:leaf.increament().increament().print(); = this.increament().print(); = this.print(); 每调用一次increament()方法 i就会自加1。print方法打印i的值。结果是102
比如下面的代码:
Leaf leaf = new Leaf (100);
leaf.increament();
leaf对象调用了方法increament(),该方法我们知道返回的类型是Leaf,也就是说
该方法要返回一个Leaf类型的变量(一般我们习惯说成返回一个Leaf类型的对象)。
那么该方法(increament())它返回的代码是:return this;也就是说返回的是
一个Leaf类型的对象,this就是表示你当前调用这个方法的对象leaf,这里又把他返回出来了。所以这段代码就好理解了:
leaf.increament().increament().print();
先leaf.increament() 返回的是leaf
然后leaf.increament().print();
接着又是返回leaf
然后leaf.print();楼主主要明白在java中this就是指当前引用的对象,那个对象调用方法或者属性当前的对象就是它,也
就是指的是this。