组合和继承都允许在新的类中放置子对象,组合是显示的这样做,而继承则是隐式的做。
组合技术通常用于想在新类中使用现有类的功能而非他的接口。在新类中嵌入某个对象,让其实现所需要的功能,但新类的用户看到的只是新类所定义的接口,而非所嵌入对象的接口。为了取得这样效果,需要在新类中嵌入一个现有类的parivate对象。
有时,允许类的用户直接访问新类中的组合成分是极具意义的;也就是说,将成员对象声明为public。如果成员对象自身都隐藏了具体实现,那么这种做法是安全的。当用户能够了解到你正在组装一组部件,会使得端口更加易于理解。Car对象就是一个很好的例子: