组合: 在新类中产生现有类的对象,由于新的类是由现有类的对象所组成,所以这种方法称为组合
组合和继承都允许在新的类中放置对象,组合时显示的这样做,而继承则是隐式的这样做
组合技术通常用于想在新类中使用现有类的功能而非它的接口这种情形,即在新类中嵌入某个对象,让其实现所需要的功能,但在新类的用户看到的只是为新类所定义的接口,而非所嵌入对象的接口,为取得此效果,需要在新类中嵌入一个现有类的private对象
package object; class Engine{ public void start(){} public void rev(){} public void stop(){} } class Wheel{ public void inflate(int psi){} } class Window{ public void rollup(){} public void rolldown(){} } class Door{ public Window window = new Window(); public void open(){} public void close(){} } public class Car{ public Engine engine = new Engine(); public Wheel[] wheel = new Wheel[4]; public Door left = new Door(), right = new Door(); // two door public Car() { for(int i = 0; i < 4; i++) wheel[i] = new Wheel(); } public static void main(String[] args) { Car car = new Car(); car.left.window.rollup(); car.wheel[0].inflate(72); } }