面向对象编程讲究的是代码复用继承和组合都是代码复用的有效方法。组合是将其他类的对象作为成员使用继承是子类可以使用父类的成员方法。引用一个生动的比方:继承是说“我父亲在家里给我帮了很大的忙”组合是说“我请了个老头在我家里干活”。
在继承结构中父类的内部细节对于子类昰可见的。所以我们通常也可以说通过继承的代码复用是一种“白盒式代码复用”
组合是通过对现有的对象进行拼装(组合)产生新的、更复杂的功能因为在对象之间,各自的内部细节是不可見的所以我们也说这种方式的代码复用是“黑盒式代码复用”。
is-a关系用继承表达,has-a关系用组合表达继承体现的是一种专门化的概念而组合则是一種组装的概念。
个人推荐:除非用到向上转型不然优先考虑组合。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。