1、继承概念的实现方式主要有2类:实现继承、接口继承。
Ø 实现继承是指使用基类的属性和方法而无需额外编码的能力;
Ø 接口继承是指仅使用属性和方法的名称、子类必须提供实现的能力(子类重构爹类方法);
父类是抽象类,仅定义将由子类创建的一般属性和方法。
2、抽象类
同java里的接口定义,父类不实现任何功能
import abc class Animal: @abc.abstractmethod def run(self): pass @abc.abstractmethod def eat(self): pass class People(Animal): def run(self): print('people is walking') def eat(self): print('people is eating')
3、派生
除了继承父类的,还要派生属于自己的属性
4、多态是为了实现接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中不同的实例(如People,Pig)的某一属性时的正确调用。
![](https://i-blog.csdnimg.cn/blog_migrate/789deb5ba9efafc9be80a82dfada239c.png)
5、组合
对象作为另一个对象的属性,如 teacher1.course = python 其中python是个课程对象
6、封装
加__变形后实现隐藏,意义是隔离复杂性,特性如下
1、在类外部无法直接obj.__AttrName
2、在类内部直接obj.__AttrName
3、子类无法覆盖父类__开头的属性
class A: __x = 1 def __init__(self,name): self.__name = name def __foo(self): print('run foo') print(self.__x) a = A('egon') a._A__foo() print(a._A__x)