Python高级第十一天(多重继承)

点赞加关注加转发是您给我更新的动力,如需今日相关资料或者问题可私信“资料”,特别提醒本人不是培训机构,只是爱好,自学多年分享经验,谢谢。

继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。举例说明:例如 Animal 类即动物类,层次的设计,假设我们要实现以下4种动物:


Python高级第十一天(多重继承)

如果按照哺乳动物和鸟类归类,我们可以设计出这样的类的层次。


Python高级第十一天(多重继承)

但是如果按照运动方式来分,例如能跑,能飞。


Python高级第十一天(多重继承)

如果要把上面的两种分类都包含进来,我们就得设计更多的层次。


Python高级第十一天(多重继承)

那这个结构层次就复杂起来了,如果要再增加“宠物类”和“非宠物类”,这么搞下去,类的数量会呈指数增长,很明显这样设计是不行的;所以在类中使用多重继承,按主要的类层次区分,先按照哺乳类和鸟类设计。


Python高级第十一天(多重继承)

接着就是各种动物类。


Python高级第十一天(多重继承)

此时根据功能来进行增加类。


Python高级第十一天(多重继承)


Python高级第十一天(多重继承)

通过多重继承,一个子类就可以同时获得多个父类的所有功能。我们在设计类的继承关系时,通常主线都是单一继承下来的,例如, Ostrich 继承自 Bird 。但是,如果需要加入其它的功能,通过多重继承就可以实现,比如,让 Ostrich 除了继承自 Bird 外,再同时继承 Runnable 。这种叫做MixIn。MixIn的目的就是给一个类增加多个功能,这样,在设计类的时候,我们优先考虑通过多重继承来组合多个MixIn的功能,而不是设计多层次的复杂的继承关系。这样一来,我们不需要复杂而庞大的继承链,只要选择组合不同的类的功能,就可以快速构造出所需的子类。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章