o1_什么是多态.py

 1 #  Learner BM
 2 
 3 """
 4 什么是多态,?不同的子类对象,调用相同的父类方法,产生不同的执行结果?
 5     多态就是
 6     多态的前提
 7         一需要继承
 8         二冲洗重写
 9     如何实现多态,通俗讲,跟对象当做参数传递是一回事,区别在于多态需要继承,需要子类重写方法
10     实现可以一次性调用到父类与子类的方法和属性
11     例如
12      class A ()
13         def Afunc:
14         print('我是父类A的方法')
15      class B(A)   B继承A类
16         def Afunc  重写父类A的方法
17             print('我是A的子类重写的A类的方法)
18 
19      class C()
20         def cfun(self,对象)   接收A或者B类的对象
21             Afunc()           调用A或B对象的方法
22 创建实例
23 a = A()
24 b = B()
25 c = C()
26 c.cfun(a)  参数为父类的对象
27 c.cfun(b)   参数为子类的对象 输出结果不同
28 """
29 
30 #  定义类父类Dog
31 class Dog():
32     def __init__(self,name):
33         self.name = name
34     def game(self):
35         print('我是父亲的game方法')
36 #  子类继承Dog
37 class DaHuang(Dog):
38     #  子类继承父类的 __init方法,默认拥有名字属性,无需重写
39     #  子类重写弗雷的game方法
40     def game(self):
41         print('我是Dog的儿子,这是我的game方法')
42 class Persion():
43     def __init__(self,name):
44         self.name = name
45     def play(self,dog):
46         print('我是persion类,我可以调用Dog父亲以及Dog儿子的game方法,这次调用的是%s的方法' % dog.name)
47         dog.game()
48 #  实例化
49 
50 dogfather = Dog('狗粑粑')
51 dogson = DaHuang('狗儿子')
52 xiaoming =Persion('小明')
53 
54 xiaoming.play(dogfather)
55 xiaoming.play(dogson)
View Code

posted on 2020-03-10 15:37  RRRRRRR1  阅读(10)  评论(0)    收藏  举报