继承,多态,封装
继承:
子类继承父类的所有数据属性和方法属性,假如子类吃饭动作和父类不一样,那就子类就有自己的吃饭动作,子类比父类功能更多,也是ok的
python中类的继承分为:单继承和多继承
class Parent1: pass class Parent2: pass class SubSon(Parent1): #单继承 pass class SubSon(Parent1,Parent2): #多继承 pass
什么时候使用继承?
1当类之间有很多相同的功能,提取这些共同的功能做成基类(父类),用继承比较好
2当类之前有明显不同,但是类之间有所关联,可以用组合
继承有两种含义:
含义一:继承基类的属性,并做出自己的改变或者扩展功能(代码重用,但是偶合性太强)
含义二:声明某个子类兼容于基类,定义一个接口类,子类继承接口类,并且实现接口中定义的方法,接口的方法是抽象的,具体实现由子类实现
#接口类的方法没有具体实现 class People: def read(self): pass def write(self): pass #子类继承接口类后,实现具体方法 class Child(People): def read(self): print("我在认真的读书") def write(self): print("我在努力的写作")
继承顺序
终极解密:python是如何实现继承的,对于定义的每个类,python会计算出一个方法解析顺序(MRO)列表,然后按照MRO列表顺序,从右到右开妈查找基类,直到找到第一个匹配的属性的类停止,MRO列表的构造是通过一个C3线性化算法来实现的,合并所有父类的MRO列表并遵循三条准则:
1,子类会先于父类被检查
2,多个父类会根据它们在MRO列表中的顺序被检查
3,如果类存在2个合法的父类,选择第一个父类
子类中调用父类的方法
多态:
有很多子类都在调用吃饭的方法,但是每个子类吃饭的动作却不尽相同,这就多态
封装:
类的一些数据属性不想让外界访问到的,可以 __name