Python----面向对象---多态与多态性

一、什么是多态

多态是同一类事物的多种形态

例如:

 1 import abc
 2 class Animal(metaclass=abc.ABCMeta): #同一类事物:动物
 3     @abc.abstractmethod
 4     def talk(self):
 5         pass
 6 
 7 class People(Animal): #动物的形态之一:人
 8     def talk(self):
 9         print('say hello')
10 
11 class Dog(Animal): #动物的形态之二:狗
12     def talk(self):
13         print('say wangwang')
14 
15 class Pig(Animal): #动物的形态之三:猪
16     def talk(self):
17         print('say aoao')

二、什么是多态性

多态性指的是可以在不考虑对象类型的情况下而直接使用对象

例如:

 1 peo1 = People()
 2 dog1 = Dog()
 3 pig1 = Pig()
 4 
 5 peo1.talk()
 6 dog1.talk()
 7 pig1.talk()
 8 
 9 结果为:
10 
11 say hello
12 say wangwang
13 say aoao
更进一步,我们可以定义一个统一的接口来使用
 1 def func(animal):
 2     animal.talk()
 3 
 4 
 5 func(peo1)
 6 func(pig1)
 7 func(dog1)
 8 
 9 结果为:
10 
11 say hello
12 say aoao
13 say wangwang

三、多态性的好处

1.增加了程序的灵活性

  以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal)

2.增加了程序额可扩展性

 通过继承animal类创建了一个新的类,使用者无需更改自己的代码,还是用func(animal)去调用  

例如:

 1 class Cat(Animal):  # 属于动物的另外一种形态:猫
 2     def talk(self):
 3         print('say miao')
 4 
 5 cat1 = Cat()
 6 
 7 func(cat1)
 8 
 9 结果为:
10 
11 say miao

 

posted @ 2018-03-20 13:42  xudachen  阅读(215)  评论(0编辑  收藏  举报