第6章 合成
一、合成的语法
对象引用初始化,可在下面这些地方进行:
(1) 在对象定义的时候。这意味着它们在构建器调用之前肯定能得到初始化。
(2) 在那个类的构建器中。
(3) 紧靠在要求实际使用那个对象之前。这样做可减少不必要的开销——假如对象并不需要创建的话。
Bath.java
在类内作为字段使用的基本数据会初始化成零;对象句柄会初始化成null,而且假若试图为它们中的任何一个调用方法,就会产生一次“违例”。
例:SprinklerSystem.java
二、什么时候使用合成
如果想利用新类内部一个现有类的特性,而不想使用它的接口,通常应选择合成。也就是说,我们可嵌入一个对象,使自己能用它实现新类的特性。但新类的用户会看到我们已定义的接口,而不是来自嵌入对象的接口。考虑到这种效果,我们需在新类里嵌入现有类的private对象。
例:Car.java