刚开始学习java,问个遇到的问题,希望哪位兄弟帮忙解决下,万分感谢。class Cleanser {
  private String s = "Cleanser";
  public void append(String a) { s += a; }
  public void dilute() { append(" dilute()"); }
  public void apply() { append(" apply()"); }
  public void scrub() { append(" scrub()"); }
  public String toString() { return s; }
  public static void main(String[] args) {
    Cleanser x = new Cleanser();
    x.dilute(); x.apply(); x.scrub();
    System.out.print(x);
  }
} 这段程序运行结果是Cleanser dilute() apply() scrub()     
为什么不是Cleanser dilute() Cleanser apply() Cleanser  scrub()     

解决方案 »

  1.   


    Cleanser x = new Cleanser();  //s这个时候是Cleanser
    x.dilute();     //s这个时候是Cleanser dilute() 
    x.apply();      //s这个时候是Cleanser dilute() apply() 
    x.scrub();      //s这个时候是Cleanser dilute() apply() scrub()   
    System.out.print(x);因为你每次修改了成员变量x,那么x就是在以前的x基础上加上append传入的参数啊
      

  2.   


      Cleanser x = new Cleanser(); //因为你这就创建了一个Cleanser类型的对象 x
      x.dilute(); x.apply(); x.scrub();  //所以不断调用这些方法都是对x这个对象进行操作
      System.out.print(x);你执行这些方法的时候,就是不断的在s的基础上累加,注意的地方就是记住:这就是一个对象,就创建了一个对象,所有的调用方法都是等于操作一个对象,不断的对s进行累加!
      

  3.   

    我运行过了答案没错啊

    Cleanser dilute() apply() scrub()
    看看是不是你代码发错了 还是 什么别的原因
      

  4.   

    class Cleanser {
      private String s = "Cleanser";
      public void append(String a) { s += a; }
      public void dilute() { append(" dilute()"); }
      public void apply() { append(" apply()"); }
      public void scrub() { append(" scrub()"); }
      public String toString() { return s; }
      public static void main(String[] args) {
        Cleanser x = new Cleanser();
        x.dilute(); x.apply(); x.scrub();
        System.out.print(x);
      }
    } public class Detergent extends Cleanser {
      
      public void scrub() {
        append(" Detergent.scrub()");
        super.scrub(); 
      }
        public void foam() { append(" foam()"); }
        public static void main(String[] args) {
        Detergent x = new Detergent();
        x.dilute();
        x.apply();
        x.scrub();
        x.foam();
        System.out.print(x);
        System.out.print("Testing base class:");
        Cleanser.main(args);
      }
    改成这样最后打印出来的x应该是什么?