我们只需在新类里简单地置入对象句柄即可。举个例子来说,假定需要在一个对
象里容纳几个
String
对象、两种基本数据类型以及属于另一个类的一个对象。对
于非基本类型的对象来说,只需将句柄置于新类即可;而对于基本数据类型来说,
则需在自己的类中定义它们。如下所示(若执行该程序时有麻烦,请参见第
3
章
3.1.2
小节“赋值”):
218-219
页程序
//: c06:SprinklerSystem.java
// Composition for code reuse.
class WaterSource {
private String s;
WaterSource() {
System.out.println("WaterSource()");
s = new String("Constructed");
}
public String toString() { return s; }
}
public class SprinklerSystem {
private String valve1, valve2, valve3, valve4;
WaterSource source;
int i;
float f;
void print() {
System.out.println("valve1 = " + valve1);
System.out.println("valve2 = " + valve2);
System.out.println("valve3 = " + valve3);
System.out.println("valve4 = " + valve4);
System.out.println("i = " + i);
System.out.println("f = " + f);
System.out.println("source = " + source);
}
public static void main(String[] args) {
SprinklerSystem x = new SprinklerSystem();
x.print();
}
} ///:~
WaterSource
内定义的一个方法是比较特别的:
toString()
。大家不久就会知
道,每种非基本类型的对象都有一个
toString()
方法。若编译器本来希望一个
String
,但却获得某个这样的对象,就会调用这个方法。所以在下面这个表达式
中:
System.out.println("source = " + source) ;
编译器会发现我们试图向一个
WaterSource
添加一个
String
对象(
"source ="
)。
评论