public class Leaf{
int i;
Leaf(int i){this.i = i;
}
Leaf increament(){
i++;
return this;
}
void print(){
System.out.println("i = "+i);
}
public static void main(String[] args){
Leaf leaf = new Leaf(8);
leaf.intcreament().intcreament().print();//这句是什么意思??
}
}
int i;
Leaf(int i){this.i = i;
}
Leaf increament(){
i++;
return this;
}
void print(){
System.out.println("i = "+i);
}
public static void main(String[] args){
Leaf leaf = new Leaf(8);
leaf.intcreament().intcreament().print();//这句是什么意思??
}
}
楼主没有弄懂返回值啊,
leaf.intcreament()返回Leaf对象的引用,由于return this就是返回本身的
对象引用,之后就一样了,最后调用print方法
其实这句话可以转换为:
Leaf leaf2=leaf.increament();
Leaf leaf3=leaf2.increament();
leaf3.print();
这个说法有问题。首先用带参构造函数生成一个对象,并且其值为8,在调用increament()方法时,i值增加1。可以看出其调用了两次,所以i值应该为10
this指代当前对象,也就是Leaf
return this; 返回的就是一个Leaf对象
leaf.intcreament().intcreament().print();
leaf.intcreament() 此时返回的是一个Leaf对象 此时调用了一个构造方法 i = 8 + 1
leaf.intcreament().intcreament() 在上一步的基础上再调用一次intcreament() 也就是再调用一次构造方法 此时 i = 8 + 1 + 1 = 10
leaf.intcreament().intcreament().print();在上一步的基础上 将结果i 打印出
结果为 10
不知这样解释楼主是否明白?