继承与组合:
继承是实现类重用的重要手段,但继承有一个最大的坏处:就是破坏封装,相比之下,组合也是实现类重用的重要方式,而采用组合方式来实现类重用则能提供更好的封装性。
继承特点:
继承子类扩展,得到父类的属性和方法。(权限允许的情况,子类可以直接访问父类的属性和方法,极大的破坏了封装的特性)
从而造成子类和父类的严重耦合性。从这个角度来看,父类的实现细节对子类不再透明。(解决方法,将不必要的属性设置为private提供公共方法。)
利用组合实现复用:如需要复用一个类,除了把这个类当成基类来继承还可以把该类当成另一个类的组合成分,从而允许直接复用该类的public 方法。组合把旧类对象作为新类属性嵌入。实现新类功能。
继承表达的是一种(is-a)的关系。 组合表达的是 (has -a)