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,怎么可以直接打印呢?
解决方案 »
- 关于大数操作的问题
- jdialog传递数据的问题!
- java怎样用hashtable判断一个子窗体是否已经打开
- 大家好,帮我调试一下这个程序好吗?关于对象克隆的
- 从.NET转学jsp应从那一方面学起
- 微积分+基础物理没学好的下场+_+;;,求算法!开发过物理类游戏的朋友,物理学的好的朋友来看呀!!!!!!!!救命
- #用java 画个窗口,怎么它就这么难!
- 帮助啊,大哥们,那里可以得到java源代码的资料
- JAVA可以访问SQL SERVER吗?
- ■■投诉Java版主,您是MS的枪手,删除Java贴子,想要我们学.net吗?大家同意的,每人发贴子,一起UP,一起投诉!!!
- 请问java下,自定义表单现在一般采用什么技术!
- 怎么实现下面这个类的克隆?
相当于
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。