面向对象的三大特征-多态

多态:多种状态

 

 1 #设定抽象类 定义动物规则
 2 import abc
 3 class Animal(metaclass = abc.ABCMeta):
 4 
 5     #设定抽象方法 叫
 6     @abc.abstractmethod
 7     def say(self):
 8         pass
 9 
10     #设定抽象方法 跑
11     @abc.abstractmethod
12     def run(self):
13         pass
14 
15 #声明小狗的类
16 class Dog(Animal):
17     #设定抽象方法 叫
18     def say(self):
19         print('小狗汪汪叫')
20 
21     #设定抽象方法 跑
22     def run(self):
23         print('小狗四条腿跑~')
24 
25 #声明小猫的类
26 class Cat(Animal):
27     #设定抽象方法 叫
28     def say(self):
29         print('小猫喵喵叫~')
30 
31     #设定抽象方法 跑
32     def run(self):
33         print('小猫撒腿就跑~')
34 
35 #声明小鸡的类
36 class Chick(Animal):
37     #设定抽象方法 叫
38     def say(self):
39         print('小鸡咯咯叫')
40 
41     #设定抽象方法 跑
42     def run(self):
43         print('小鸡两条腿跑')
44 
45 #实例化小狗,小猫和小鸡的对象
46 xiaohei = Dog()#小狗
47 xiaohua = Cat()#小猫
48 xiaofei = Chick()#小鸡
49 
50 #声明行为类
51 class Action:
52     #初始化方法
53     def __init__(self,animal):
54         #将接受的动物 保存到当前对象中
55         self.animal = animal
56 
57     #叫的方法
58     def jiao(self):
59         #调用动物的叫的方法
60         self.animal.say()
61 
62     #跑的方法
63     def pao(self):
64         self.animal.run()
65 
66 
67 #实例化行为类的对象
68 action = Action(xiaohei)
69 
70 #调用行为对象的方法
71 action.jiao()
72 #输出结果:小狗汪汪叫
73 action.pao()
74 #输出结果:小狗四条腿跑~
75 
76 #修改传入的动物
77 action.animal = xiaohua
78 
79 #调用行为对象的方法
80 action.jiao()
81 #输出结果:小猫喵喵叫~
82 action.pao()
83 #输出结果:小猫撒腿就跑~
84 
85 #修改传入的动物
86 action.animal = xiaofei
87 
88 #调用行为对象的方法
89 action.jiao()
90 #输出结果:小鸡咯咯叫
91 action.pao()
92 #输出结果:小鸡两条腿跑

 

posted @ 2019-05-16 14:29  双伟科技  阅读(233)  评论(0编辑  收藏  举报