对于各种结构化组织的组件来说,一个软件自然的方式就是采用继承模式。继承这个概念不陌生,例如,你爸爸的财产会由儿子继承。再软件中继承类似把许多定义提取出来,分成许多组,按照层次来进行划分,从具体到更加通用的认知形成一种树状结构。从而每个分组会形成一种超集与子集的关系。那么再层与层之间常常会指明小组之间的关系。
这种树状结构也含有等级的意味,这在软件开发中作用在设计中。对于共性的功能来说,可以分组在一起,因此提升了代码的重用性。不同的行为会被看作通用情况的一种延伸。
在面向对象编程中,模块的机制和这种等级组织都与继承有关系。这样定义一个新类可以可以根据已有的类来进行书写,相当于在已有的类基础上继续发展。
在面向对象技术中,已有的类通常描述成基类、父类、或超类,在它基础上新定义的类就会叫做子类。
子类与父类不同,在子类中也会有两种情况,一种是子类可以有具体的已有行为,这是通过覆写父类来实现的。另一种是子类可以扩展父类,也就是定义新的方法来实现。
在 Python 的例外错误类中也体现了这种树状结构。可以在 Python 官方文档里找到 Exception 的树状结构图来查看。