为什么第六行一定要写“Leaf3 increment()”?改成“increment()”返回“return i;”就不行?书上的例子是:
public class Leaf3
{

int i = 0;

Leaf3 increment()
{
i++;
return this;
} void println()
{
System.out.println("i = " + i);
} public static void main(String args[])
{
Leaf x = new Leaf();
x.increment().increment().increment().print();
}
};我把第六行改成:
public class Leaf3
{

int i = 0;

increment()
{
i++;
return i;
} void println()
{
System.out.println("i = " + i);
} public static void main(String args[])
{
Leaf x = new Leaf();
x.increment().increment().increment().print();
}
};

解决方案 »

  1.   

    1 return i;只是返回了一个整形数字,System.out.println(x.increment()),若是这样还行的通
    x.increment().increment().increment().print();但这样就不行了,每次返回的是对象,所以能继续调用increment()
    2 楼主改写代码的
              increment()//没有返回类型,编译是通不过的
    {
    i++;
    return i;
    }
      

  2.   

    this代表对象本身,increment()也不是构造函数一定会报错的
      

  3.   

    问题在于:x.increment().increment().increment().print();
    每一次调用increment()都要使用到reference。
    如果改成这样:
    int increment()
    {
    i++;
    return i;
    }
    public static void main(String args[])
    {
    Leaf x = new Leaf();
    x.increment();
                      x.increment();
                      x.increment();
                      x.print();
    }
    这样可以达到相同效果
      

  4.   

    返回的是 Leaf3类型才可以x.increment().increment().连续调用
      

  5.   

    我懂了,真笨……Leaf3原来是返回类型……=.=谢谢大家~~我明白了~~