public class Leaf{
   int i=0;
   Leaf increment(){
      i++;
      return this;   
   }
   void print(){
      System.out.println("i= "+i);
   }
   public static void main(String[] args){
      Leaf x = new Leaf();
      x.increment().increment().increment().print();//这条语句
   }
}
最后一条语句,那三个increment()都是怎么回事啊?

解决方案 »

  1.   

    Leaf increment()
    是写了一个方法,方法的返回值类型是 LEAF 类型的.
    NEW 了一个LEAF对象以后,去执行类中定义的方法,使之在堆内存中定义的i加一.调用三次,I由0变成3.最后打印出来.
      

  2.   

    也就是说写三个increment()是调用三次的意思?也可以写两个或者4个?
    可以这么调用么?
      

  3.   

    你想调用几次就几次increment()返回类型是LEAF 类型的
      

  4.   

    这题有种递归的感觉,increment()返回的也是Leaf,所以increment()方法调用一次,i就+1,但操作的还是同一个对象x
      

  5.   

    如果increment()不是Leaf类型的,也可以这么调用么?
      

  6.   

    increment()返回的是Leaf类型,所以可以不断调用同一方法,如果不是Leaf类型,就看返回的类型是否有increment()方法了,但是结果是肯定不一样的
      

  7.   

    因为increment()返回的是Leaf类型,所以可以重复调用Leaf里调用的方法了
      

  8.   

    他写的那个方法 返回类型是LEAF是容易诱导你想偏的。
    这些也就是一些基本的面向对象知识.以后慢慢的就不会再想这些事情了。
      

  9.   

    caizhh(雨中の云) ( ) 信誉:100    Blog  2006-11-20 15:15:36  得分: 0  
        
    这题有种递归的感觉,increment()返回的也是Leaf,所以increment()方法调用一次,i就+1,但操作的还是同一个对象x====
    是重复调用  
     
      

  10.   

    x.increment().increment().increment().print();//这条语句
    他返回的始终是this,即当前对象,使得 i++ 3次