返回列表 发帖

[原创]Java中this与static的用法

[这个贴子最后由starlight在 2005/05/18 02:38pm 第 3 次编辑]

[watermark]
  本文是学习Thinking in Java的一些心得和笔记整理如下:
  [color=#DC143C]关键字this
  使用2个同型对象a、b,如何区分这两个对象同时调用函数f()呢?
  例如:
  1. class Banana {
  2.     void f(int i) {/*...*/}
  3.     Banana a = new Banana(),b = new Banana();
  4.     a.f(1);
  5.     b.f(2);
  6. }
复制代码
  其实是编译器自动作了一些事。有个隐晦的第一参数被传入f(),这个参数是“正在操作中的对象的引用”。所以上述代码中函数的调用形式如下:
  
  1.     Banana.f(a,1);
  2.   Banana.f(b,2);
  3.    
复制代码
  此种转换只存在于语言内部,无法在编辑器上书写那样的代码使得通过编译。
  这个this关键字仅用于函数之内,能取得“唤起此一函数”的那个对象引用。可以对任何对象引用一样的处理方式来处理this。然而只是在某个类的某个函数内调用同一个类的另一个函数时,没有必要使用this。
  何时需要使用this:当你必须指定当前的对象引用究竟为何时,才需要使用关键字this。
  例如:
  1. public class Leaf {
  2.     int i = 0;
  3.     Leaf increment()
  4.     {
  5.         i++;
  6.         return this;
  7.     }
  8.     void print()
  9.     {
  10.         System.out.println("i = "+i);
  11.     }
  12.     public static void main(String[] args)
  13.     {
  14.         Leaf x = new Leaf();
  15.         x.increment().increment().increment().print();
  16.     }
  17. }
复制代码
  由于increment()通过关键字this返回了当前的对象,所以可以在同一对象身上执行多次操作。

[原创]Java中this与static的用法

leaf类是看明白了
fllower就不行了...
this(petals);  //这里是墨子意思....

TOP

[原创]Java中this与static的用法

阿?斑竹不是学java的?
this(petals);就是调用上面的那个Flower(int petals)构造函数阿
其实就是先Flower(int petals)再Flower(String s,int petals)再Flower()最后print方法,这里的参数呢就是("hi",47)这两个

TOP

[原创]Java中this与static的用法

嘿嘿,借此帖咨询一个问题
非常刻苦,到上面两位版主这般水平得多久阿

TOP

[原创]Java中this与static的用法

看来 谷神不死 朋友也是搞编程的咯~~  编程偶不懂,不过欢迎你常来论坛看看啦
或是加我们的编程版斑竹 x86 的QQ,大家互相交流。

TOP

[原创]Java中this与static的用法

唉,楼上的看走眼了
本人地地道道的初学者,正在为看不清前面的路而迷茫呢

TOP

[原创]Java中this与static的用法

学习吧,没有什么比学习更能到达我们的目标了

TOP

返回列表 回复 发帖