继承
1.概念
如果两个或者两个以上的类中具有相同的属性或者方法,我们可以抽取一个类出来,在该类中定义相同的属性或者方法
被抽取出来的类-----》父类 超类【super】super 父类的引用 基类【base】
两个或者两个以上的类------》子类 派生类
他们之间的关系: 子类 继承自 父类
父类 派生了 子类
2.单继承
单继承:一个子类只能继承自一个父类
语法:
父类:
class 父类类名(object):
类体【共同的属性或者方法】
子类:
class 子类类名(父类类名):
类体【特有的属性或者方法】
注意:如果一个类没有明确的父类,则默认继承自object
3、多继承
1、 如果子类中定义了构造函数,不管父类中是否定义构造函数,创建子类对象调用的都是子类中的构造函数
2、 如果父类中定义了构造函数,子类没有定义构造函数,则创建子类对象调用的是哪个父类中的构造函数跟父类列表中的顺序有关
在多继承中,如果在子类的构造函数中需要调用父类的构造函数,一定要指明是哪个父类
重名的函数
若多个父类中出现了重名的函数,子类对象优先调用的是父类列表中第一个父类中的函数
若子类中出现了和父类重名的函数,子类对象优先调用的是子类中的函数【覆盖】
总结:
继承的特点:
a.子类对象可以直接访问父类中未被私有化的属性
1》子类定义了构造函数,需要调用父类中的构造函数
2》子类未定义构造函数,直接访问
b.子类对象可以直接调用父类中未被私有化的成员函数
c.父类对象不能访问子类中特有的成员
d.一个父类可以有多个子类
e.一个子类可以有一个父类,也可以有多个父类
继承的优缺点:
优点:
a.可以简化代码,减少冗余
b.提高代码的扩展性
c.提高了代码的可维护性
d.提高了代码的复用性
e.继承是多态的前提
缺点:
耦合被用来描述类和类之间的关系,耦合性越低,说明代码质量较高
在继承关系中,耦合性相对较高【如果修改了父类,则子类也会受到影响】
.多继承的特点
py2,经典类,没有继承自object的类以及它的子类,在多继承中,采用的深度优先遍历
py3,新式类,继承自object的类以及它的子类,在多继承中,采用的广度优先遍历
函数的重写和重载
重写:override,在继承关系中,如果在子类中出现了和父类重名的函数,则称为子类重写了父类中的函数
重载:overload,只要重新实现一个函数,就称为重载
重载 ----同一个方法 调用后体现不同的结构
比如说系统有一个方法 fun1 然后你在自己的类中重新定义了这样一个方法