多态概念
所谓多态:多种形态、状态,定义时的类型和运行时的类型不一样,此时就称为多态。
补充:多态就是同一种行为,对于不同的子类【确切的来说,子类对象】,有不同的行为表现。
python不支持java和C#这一类强类型语言中多态的写法,但是原生多态,python崇尚“鸭子类型",利用python伪代码实现java和C#的多态。
实现多态需要两个前提
1、继承:多态必须发生在父类和子类之间
2、重写:子类重写父类的方法
演示:
这就是多态很典型的一个实现【在每个子类中有不同的表现】,多态的优势就是上面所演示的,可用一个函数去调用全部的类,我们不需要去用下面的方法去挨个调用
为什么用一个函数去调用全部的类是一个优势呢?因为当我们增加一个新的子类的时候,我们只需要写出子类函数,不需要单独调用,扩展很容易
如下面增加一个鸟类的子类
多态有什么用?
增加程序的灵活性
增加程序的扩展性
补充
鸭子类型:在程序设计中,鸭子类型(英语duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或者实现特定的接口,而是由当前方法和属性的集合决定。
“鸭子测试”可以这样表述:当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。
在鸭子类型中,关注的不是对象的类型本身,而是它是如何使用的。
举例
比如我们在原来的动物类的代码中增加一个人的类
虽然属于不同的类,但我们依然可以统一调用他
python并不关心他们分属于哪个类,只是他们的里面都有say_who这个函数,我们就可以把他们视为同一个类型,统一调用。