class WaterSource
{
private String s;
WaterSource()
{
System.out.println(" watersource()");
s=" constructed";
}
public String toString(){return s;}
}
public class SprinklerSystem
{
private String value1,value2,value3,value4;
private WaterSource source=new WaterSource();
private int i;
private float f;
public String toString()
{
return
"value1="+value1+" "+
"value2="+value2+" "+
"value3="+value3+" "+
"value4="+value4+"\n "+
"i="+i+" "+"f="+f+" "+
"source="+source;
}
public static void main(String[] args)
{
SprinklerSystem sprinklers=new SprinklerSystem();
System.out.println(sprinklers);
}
}这里可能涉及到初始化顺序的问题还不明确
执行结果第一行为WaterSource() 最后一行为source=constructed
小弟不太懂 这之间都发生了什么??
{
private String s;
WaterSource()
{
System.out.println(" watersource()");
s=" constructed";
}
public String toString(){return s;}
}
public class SprinklerSystem
{
private String value1,value2,value3,value4;
private WaterSource source=new WaterSource();
private int i;
private float f;
public String toString()
{
return
"value1="+value1+" "+
"value2="+value2+" "+
"value3="+value3+" "+
"value4="+value4+"\n "+
"i="+i+" "+"f="+f+" "+
"source="+source;
}
public static void main(String[] args)
{
SprinklerSystem sprinklers=new SprinklerSystem();
System.out.println(sprinklers);
}
}这里可能涉及到初始化顺序的问题还不明确
执行结果第一行为WaterSource() 最后一行为source=constructed
小弟不太懂 这之间都发生了什么??
所以执行System.out.println(" watersource()");
private WaterSource source=new WaterSource();
这一行会先于SprinklerSystem类构造器执行而WaterSource类的构造器
WaterSource()
{
System.out.println(" watersource()");
s=" constructed";
}
又输出了watersource,所以这就是第一行的结果。2.在SprinklerSystem的main方法中,
System.out.println(sprinklers);
在打印sprinklers时会去调用
SprinklerSystem类的toString方法从这个方法中会打印出value...
最后一行"source="+source;
打印source这个对象时,
会调用WaterSource类的toString方法,
由于这个方法返回
constructed所以就是你最后一行的结果