day6-类多态

1. 概念

多态性:允许将子类类型的指针赋值给父类类型的指针

封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了代码重用。而多态则是为了实现另一个目的:接口重用

遗憾的是,在python不能直接的支持多态,所以我们只能间接的去执行
 
2. 实例
 1 class Animal:
 2  
 3     def __init__(self,name):
 4         self.name = name
 5  
 6     def talk(self):
 7         print("animal {0} is talk".format(self.name))
 8  
 9 class Cat(Animal):
10     def talk(self):
11         return "Meow!"
12  
13 class Dog(Animal):
14     def talk(self):
15         return "Woof!Woof!"
16 
17 # 定义一个调用类的talk方法,调用时传入类的实例
18 # 一个接口,多种形态
19 def animal_talk(obj):    
20     print(obj.talk())
21 
22 d = Dog("d1")
23 c = Cat("C1")
24 
25 # 调用类的talk方法
26 # 我们期待以这种形式调用
27 Animal.talk(d)
28 Animal.talk(c)
29 
30 # 把对象存入列表中 
31 all_animal = [d,c]  
32 
33 # 循环传入对象
34 for animal in all_animal:
35     # 实现类似于Animal.talk(Dog("d1"))这种效果
36     animal_talk(animal)
37 
38 
39 animal d1 is talk
40 animal C1 is talk
41 Woof!Woof!
42 Meow!

 

posted @ 2017-06-27 17:18  不知所以  阅读(69)  评论(0)    收藏  举报