class Instrument {
  public void play() {
    System.out.println("Instrument.play()");
  }
  public String toString() {
    return "Instrument";
  }
  public void adjust() {}
}class Wind extends Instrument {
  public void play() {
    System.out.println("Wind.play()");
  }
  public String toString() {
    return "Wind";
  }
  public void adjust() {}
}class Percussion extends Instrument {
  public void play() {
    System.out.println("Percussion.play()");
  }
  public String toString() {
    return "Percussion";
  }
  public void adjust() {}
}class Stringed extends Instrument {
  public void play() {
    System.out.println("Stringed.play()");
  }
  public String toString() {
    return "Stringed";
  }
  public void adjust() {}
}class Brass extends Wind {
  public void play() {
    System.out.println("Brass.play()");
  }
  public void adjust() {
    System.out.println("Brass.adjust()");
  }
}class Woodwind extends Wind {
  public void play() {
    System.out.println("Woodwind.play()");
  }
  public String toString() {
    return "Woodwind";
  }
}public class E03_MusicToString {
  static Instrument[] orchestra = {
    new Wind(),
    new Percussion(),
    new Stringed(),
    new Brass(),
    new Woodwind()
  };
  public static void printAll(Instrument[] orch){
    for(int i = 0; i < orch.length; i++)
      System.out.println(orch[i]);
  }
  public static void main(String args[]) {
    printAll(orchestra);
  }
} ///:~

解决方案 »

  1.   

    public static void main(String args[]) { 
        printAll(orchestra); 
      } 
    调用printAll方法
    public static void printAll(Instrument[] orch){ 
        for(int i = 0; i < orch.length; i++) 
          System.out.println(orch[i]); 
      } 
    核心也就在这个System.out.println(orch[i]); 了
    注意:执行System.out.println(x);时会自动调用x对象的toString()方法,所以,对于 
    static Instrument[] orchestra = { 
        new Wind(), 
        new Percussion(), 
        new Stringed(), 
        new Brass(), 
        new Woodwind() 
      }; 
    中的new Wind(), 
        new Percussion(), 
        new Stringed(),
    就依次调用其toString方法,输出
         Wind
        Percussion
        Stringed
    而对于new Brass(),由于其自身没有toString()方法,所以会调用其父类Wind的toString()方法,输出Wind
    最后一个new Woodwind(),调用其自身的toString方法,输出Woodwind
    所以最终结果为:
    Wind
    Percussion
    Stringed
    Wind
    Woodwind 
      

  2.   

    class lei a =new lei();
    println(a);//相当于println(a.toString()); 
     Do you know it?