Python高阶-- 多态
面向对象三大特征:封装、继承、多态
封装:将数据和方法放在一个类中就构成了封装
继承:Python中一个类可以继承于一个类也可以继承多个类,被继承的类叫做父类(或叫基类, base class),继承的类叫子类
多态:指的是一类事物有多种形态,一个抽象类有多个子类(因而多态的概念依赖于继承),不同的子类对象调用相同的方法,产生不同的执行结果,多态可以增加代码的灵活度
鸭子类型的体现:
静态语言:对于静态语言(Java,C#)来讲上面传入的对象必须是base类型或者它的子类,否则,将无法调用run()方法
动态语言:对于动态语言Python来讲,上面传入的不一定是base类型,也可以是其它类型,只要在内部实现了一个run方法,这就叫做鸭子类型的体现
多态的意义:开放封闭原则
对于一个变量,我们只需要知道它是base类型,无需确切知道它的子类型,就可以调用run()方法(即调用方只管调用,不管细节)
当需要新增功能,只需要新增一个base的子类实现run()方法,就可以在原来的基础上进行功能扩展
对扩展开放:允许新增base子类
对修改封闭:不需要修改依赖base类型的run()等函数