面向对象编程的类与方法设计解析
在面向对象编程里,多态和继承是两个极为关键的概念。多态要求同名方法实现相同的通用操作,即语义一致。而继承则允许开发者通过复用先前定义的类作为新类的基础,逐步定义新类。
1. 继承机制
继承机制主要分为单继承和多继承。单继承允许子类只有一个父类,目前所有面向对象的方法、数据库和编程语言都支持通过单继承扩展父类的定义。
然而,部分面向对象的方法、数据库和编程语言允许子类重新定义父类的部分或全部属性和方法,这就可能引发继承冲突。例如,Doctor 是 Employee 的子类,二者都有 ComputePay() 方法,这就造成了继承冲突。而且,当父类的定义被修改时,所有子类都会受到影响,可能会引入更多的继承冲突。
以下是一些可能出现的情况:
- 方法继承取消 :开发者可以通过在子类中放置存根来取消方法的继承,但如果这种取消是为了正确定义子类,那么很可能子类的分类有误,即继承了错误的父类。
- 继承冲突的原因 :大多数继承冲突是由于子类在继承层次中的分类不当,或者实际的继承机制违反了封装和信息隐藏原则。
- 解决继承冲突的准则 :
- 不要重新定义查询操作。
- 重新定义继承方法的方法应仅限制继承方法的语义。
- 永远不要改变继承方法的底层语义。
- 永远不要改变继承方法的签名(参数列表)。
不过,许多现有的面向对象编程语言会违反这些准则。在实现设计时,不同的编程语言处理继承冲突的方式也各不相同,因此了解所选编程语言的支持情况非常重要。
超级会员免费看
订阅专栏 解锁全文

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



