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);
  } 

解决方案 »

  1.   

    不明白 Cleanser.main(args);
    这个
      

  2.   

    这个问题有意思吗?你这里面两个main函数,你想的结果是运行Detergent的吧,
    结果是:Cleanser dilute() apply() Detergent.scrub() scrub() foam()Testing base class:Cleanser dilute() apply() scrub(),分析的方法和前面的一样啊!就是每次都修改了成员变量,结合一点继承,就可以分析得到结果!
      

  3.   

    调用类的静态的main方法而异啊!整个程序的入口是Detergent的main方法,里面的 Cleanser.main(args)只是调用了类 Cleanser的静态main方法!
      

  4.   


    调用这个静态main方法是不是就是为了打印出Cleanser类的输出?
      

  5.   

    是啊,就是执行了父类的main方法,和前面的那个一样的!