
继承来源于现实世界,一个最简单的例子就是孩子会具有父母的一些特征,即每个孩子都会继承父亲或者母亲的某些特征,当然这只是最基本的继承关系,现实世界中还存在着更复杂的继承。继承机制实现了代码的复用,多个类公用的代码部分可以只在一个类中提供,而其他类只需要继承这个类即可,通过继承可以创建新类,给既有类的副本添加变量和方法。
Python中使用继承的特点如下:
(1)如果在子类中需要父类的构造方法,就需要显式地调用父类的构造方法,或者不重写父类的构造方法。
(2)在调用基类的方法时,需要加上基类的类名前缀,且需要带上 self 参数变量。与类中调用普通函数的区别在于,类中调用普通函数时并不需要带上 self 参数。
(3)Python 总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,才开始到基类中逐个查找(先在本类中查找调用的方法,找不到才去基类中找)。
方法重写(override),又称为方法的覆盖。当父类方法的功能不能满足需求时,则可以在子类重写父类的方法。
Python具有重载(overload)的思想却没有重载的概念。所以有的人说Python这门语言并不支持函数重载。实际上,Python编程中具有重载的目的,却无重载的行为,或者说,Python并不需要重载。
当一个类将另外一个对象作为自己的属性成员(自己的一个属性来自另外一个对象)称为组合,组合与继承都是有效地利用已有类的资源的重要方式,但是二者的概念和使用场景皆不同。
抽象指对现实世界问题和实体的本质表现、行为和特征建模,建立一个相关的子集,用于描绘程序结构,从而实现这种模型。抽象不仅包括这种模型的数据属性,还定义了这些数据的接口。
多态是指一类事物有多种形态(一个抽象类有多个子类,因而多态的概念依赖于继承)。
多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。
封装是指将数据与具体操作的实现代码放在某个对象内部,使这些代码的实现细节不被外界发现,外界只能通过接口使用该对象,而不能通过任何形式修改对象内部实现。正是由于封装机制,程序在使用某一对象时不需要关心该对象的数据结构细节及实现操作的方法。