也就是说 ,在System.out.println("source = " + source);中,第二个source不是一个字符串,但你想把它作为字符串输出,这时系统就会找这个类中的toString方法,将toString方法的结果输出!

解决方案 »

  1.   

    没初始化source情况:
    因为没有调用到WaterSource() 方法,那么S的初始值就是Null,所以toString() 返回的是Null,也就是System.out.println("source = " + source) 输出的是source = Null,而这里的Null是S的初始值,对吗?初始化source情况:
    如果调用WaterSource() 方法那么S得到赋值"Constructed",在System.out.println("source = " + source)的输出将是source =Constructed,是这样吗?
    用代码表达是这样:class WaterSource {
      private String s;
      WaterSource() {
        System.out.println("WaterSource()");
        s = new String("Constructed");
      }
      public String toString() { return s; }
    }
    public class SprinklerSystem {
      WaterSource source=new WaterSource() ;
      void print() {
            System.out.println("source = " + source);
      }
      public static void main(String[] args) {
        SprinklerSystem x = new SprinklerSystem();
        x.print();
      }
    } ///:~