面向对象编程中的组合、继承与多态
1. 组合与继承的选择
在创建新类时,组合和继承是两种重要的方式。组合允许在不干扰现有客户端代码的情况下修改成员,还能在运行时改变成员对象,从而动态改变程序行为。而继承在编译时会受到编译器的限制,缺乏这种灵活性。
很多新手程序员可能会过度强调继承的作用,认为处处都应该使用继承,这可能导致设计变得笨拙和过于复杂。实际上,创建新类时应优先考虑组合,因为它更简单、更灵活。当积累了一定经验后,就会清楚何时需要使用继承。
2. 继承:复用接口
对象的概念是一种很方便的工具,它能将数据和功能按概念封装在一起,用编程语言中的类来表达问题空间的概念。但创建一个类后,又要创建一个功能类似的新类,这显得很麻烦。而继承可以克隆现有类,并对克隆体进行添加和修改。如果基类(也称为超类或父类)发生变化,派生类(也称为子类或继承类)也会反映这些变化。
继承通过基类型和派生类型的概念来表达类型之间的相似性。基类型包含了从它派生的所有类型共享的特征和行为。例如:
- 垃圾回收机示例 :基类型是“垃圾”,每个垃圾有重量、价值等属性,能被粉碎、熔化或分解。从这个基类型可以派生出更具体的垃圾类型,如瓶子有颜色,铝罐可以被挤压,铁罐有磁性等。
- 形状示例 :基类型是“形状”,每个形状有大小、颜色、位置等属性,能被绘制、擦除、移动、上色等。从这个基类型可以派生出具体的形状类型,如圆形、方形、三角形等,它们可能有额外的特征和行为,某些形状还可以翻转,计算面积的行为也可能不同。
继承创建的新类型不仅包含现有类型的所有成员(私有成员隐藏
超级会员免费看
订阅专栏 解锁全文

1360

被折叠的 条评论
为什么被折叠?



