面向对象系统的类与方法设计
1. 多态与继承
在使用多态时,要确保所有同名方法实现相同的通用操作,即语义一致。继承允许开发者通过复用先前定义的类作为新类的基础,逐步定义类。虽然可以单独定义每个类,但定义一个包含子类所需数据和方法的通用超类,然后让子类继承其属性,会更简单。子类继承其上方超类的属性和方法,这简化了类的定义。
常见的继承机制包括单继承和多继承。单继承允许子类只有一个父类,目前所有面向对象的方法、数据库和编程语言都允许通过单继承扩展超类的定义。
部分面向对象的方法、数据库和编程语言允许子类重新定义其超类的部分或全部属性和/或方法。这可能会引入继承冲突,即子类的属性(或方法)与超类的属性(或方法)同名。例如, Doctor 是 Employee 的子类,二者都有 ComputePay() 方法,这就导致了继承冲突。此外,当超类的定义被修改时,其所有子类都会受到影响,可能会在子类中引入更多的继承冲突。
通过重新定义功能,程序员可以通过在子类中放置存根来任意取消方法的继承,存根是方法的最小定义,用于防止语法错误。如果取消方法对于子类的正确定义是必要的,那么很可能子类分类错误,即它继承了错误的超类。
从设计角度看,继承冲突和重新定义会给最终设计和实现的解释带来各种问题。大多数继承冲突是由于子类在继承层次结构中分类不当,或者实际继承机制违反了封装和信息隐藏原则。为解决这些问题,有以下建议:
- 不要重新定义查询操作。
- 重新定义继承方法的方法应仅限制继承方法的语义。
- 继承方法的底层语义不应改变。
- 继承方
超级会员免费看
订阅专栏 解锁全文

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



