继承
继承是两个对象直接产生的一种关系
在OOP的程序中继承是描述类与类之间的一种关系
a 继承 b
继承的好处:a就可以之间使用b类中的属性和方法
继承极大的提高了代码的重用性
a称之为子类/派生类,b称为父类/基类
抽象
在使用继承的时候,一定是先抽象,在继承
抽象是抽取一堆类共同拥有的内容,形成一个新的抽象概念(类也称之为共公基类)
属性的查找顺序
没有继承关系:对象 > 类
存在继承关系:对象 > 对象的类 > 父类 > ... > object
object
是所有类的跟类,所有类都直接或间接的继承自object,在定义时没有手动继承任何类,会默认继承object,object中包含了所有对象的通用方法
经典类与新式类
新式类:只要是继承自object的都叫新式类
在python3中所有类都是新式类
python2中没有手动继承object的类都是经典类
继承的常用方式之一
可以继承一个系统已有的类,来扩展新功能
派生
当一个类继承另一个类,并存在与父类不同的内容时就称之为派生类
覆盖
在继承关系中,子类可以出现与父类完全相同的方法
会优先使用子类中的方法
子类重用父类的方法
指名道姓的调用父类中的函数
super().要访问的名字
组合:一个对象把另一个对象作为属性
python支持多继承
一个类可以同时继承多个其他类
好处:可以同时拥有多个类中已存在的内容
坏处:如果父类中出现了重复的名字,执行顺序需要参考mro列表
菱形继承
新式类:广度优先
经典类:深度优先