在class Detergent里引用他本身的scrub()方法就造成递归
相当于  public void scrub() {
    append(" Detergent.scrub()");
    scrub(); // Call base-class version
  }
在执行第三行时又回到第一行开始执行。  
所以书里scrub() 用super.scrub()引用它的父类clean.scrub()方法

解决方案 »

  1.   

    因为你的scrub()在其内部又要调用scrub(),如果没有super这个关键字的话,他会自动调用你当前类的重载版本,也就造成了自己在内部调用自己的情况,也就造成了低轨。用了super以后,他调用的就是他基类的scrub(),也就是另一个不同的方法,所以就没有递归了。
      

  2.   

    自己调用自己,是很明显的递归,如果用super,调用夫类的函数自然就不递归了
      

  3.   

    用super调用父类的方法,因为如果在继承方法中调用等于是自己调用自己,永无止境!