【1.108】继承----使用场景以及接口继承
1、继承 当 类之间有显著的不同 并且较小的类所是较大类所需的组件 这就用组合
机器人 手臂 身体 脚等
学校 教室 老师 学生 活动等
游戏 武器 角色等
2、当类之间有很多相同的功能,提取相同功能做成基类 这样就用继承较好
动物 类 都有吃喝拉撒
猫 汪汪叫 继承 动物类的 吃喝拉撒
狗 喵喵叫 继承 动物类的 吃喝拉撒
3、继承同时具有两种含义
1、继承基类的方法 并且做出自己的改变或者扩展
2、声明某个子类兼容于基类 定义一个接口类 并且实现接口中定义方法
实际中 1的含义 少用 代码就耦合了 是有害的
第二个含义 就是 接口继承
接口继承 实质上是 要求 做出一个良好的抽象 这个抽象规定了一个兼容接口 使得外部调用者无需关心 具体细节
就可以同样的处理实现了 特定接口 的所有对象
这在程序上 叫 归一化
归一化 使得 高层的外部使用者 可以不加区分的处理所有接口的兼容的对象集合
就像linux 的泛文件 概念 一样
所有东西 都可以当文件 处理 不必关心它是内存 磁盘 网络 还是屏幕
当然对于底层设计 是需要分开 字符设备 块设备 然后做出针对设计
# 接口继承 # 一切皆文件 文件就是读写 如缺少 就不是一切皆文件的概念 # 这里就是规定好接口继承,但是都要在自己的类里实现基类定义的接口方法 # 限定好来继承的类都要实现我基类的定义好的接口方法 # 接口继承 就是一个方法 就是函数 父类只是规定好了 子类必须实现的方法 # 需要借助abc模块来限制 import abc class All_file(metaclass=abc.ABCMeta): @abc.abstractmethod def read(self): pass @abc.abstractmethod def write(self): pass class Disk(All_file): def read(self): print('disk read') def write(self): print('disk write') class Cdrom(All_file): def read(self): print('cdrom read') def write(self): print('cdrom write') class Mem(All_file): def read(self): print('mem read') def write(self): print('mem write') # m1=Mem() m1.read() m1.write()