1.什么是多态
多态指的是一类事物有多种形态
例如:
动物有多种形态:
人,狗,猪
在程序中多态指的是,不同对象可以响应相同方法,并可以有自己不同的实现方式
2.为什么需要多态
案例分析:
通过上述案列可以直观的体会到多态的好处,并且它并不是一个新的知识点,python默认就是支持多态的
那么多态的带来的好处是什么?
1.增加了程序的灵活性
以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal)
2.增加了程序额可扩展性
通过继承animal类创建了一个新的类,使用者无需更改自己的代码,还是用func(animal)去调用
继承一章中指出,继承为多态提供了不要的支持,所有的动物 cat dog pig
它们都要先继承Animal
类,这样一来,才能保证,它们都能响应talk方法,不至于在调用时发生异常;
当然如果子类的设计者,完全按照Animal中规定的内容去实现子类,即使没有继承关系的存在,使用者也一样可以像使用其他对象一样使用这个子类对象, 这需要设计者在设计实现类时更加谨慎!
3.鸭子类型
Python崇尚鸭子类型,即‘如果看起来像、叫声像而且走起路来像鸭子,那么它就是鸭子’
python程序员通常根据这种标准来编写程序。例如,如果想编写现有对象的自定义版本,可以继承该对象
也可以创建一个外观和行为像,但与它无任何关系的全新对象,后者通常用于保存程序组件的松耦合度。
例1:利用标准库中定义的各种‘与文件类似’的对象,尽管这些对象的工作方式像文件,但他们没有继承内置文件对象的方法
例2:其实大家一直在享受着多态性带来的好处,比如Python的序列类型有多种形态:字符串,列表,元组,多态性体现如下