面向对象设计有一个原则“优先使用对象组合,而不是继承”. 下面是两者优缺点的比较: 组 合 关 系 继 承 关 系 优点:不破坏封装,整体类与局部类之间松耦合,彼此相对独立 缺点:破坏封装,子类与父类之间紧密耦合,子类依赖于父类的实现,子类缺乏独立性 优点:具有较好的可扩展性 缺点:支持扩展,但是往往以增加系统结构的复杂度为代价 优点:支持动态组合.在运行时,整体对象可以选择不同类型的局部对象 缺点:不支持动态继承.在运行时,子类无法选择不同的父类 优点:整体类可以对局部类进行包装,封装局部类的