Python高阶-- 多态


面向对象三大特征:封装、继承、多态

  封装:将数据和方法放在一个类中就构成了封装

  继承:Python中一个类可以继承于一个类也可以继承多个类,被继承的类叫做父类(或叫基类, base class),继承的类叫子类

  多态:指的是一类事物有多种形态,一个抽象类有多个子类(因而多态的概念依赖于继承),不同的子类对象调用相同的方法,产生不同的执行结果,多态可以增加代码的灵活度

鸭子类型的体现:

  静态语言:对于静态语言(Java,C#)来讲上面传入的对象必须是base类型或者它的子类,否则,将无法调用run()方法

  动态语言:对于动态语言Python来讲,上面传入的不一定是base类型,也可以是其它类型,只要在内部实现了一个run方法,这就叫做鸭子类型的体现

多态的意义:开放封闭原则

  对于一个变量,我们只需要知道它是base类型,无需确切知道它的子类型,就可以调用run()方法(即调用方只管调用,不管细节)

  当需要新增功能,只需要新增一个base的子类实现run()方法,就可以在原来的基础上进行功能扩展

  对扩展开放:允许新增base子类

  对修改封闭:不需要修改依赖base类型的run()等函数