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)

浙公网安备 33010602011771号