多态
多态:不同的 子类对象 调用相同的 父类方法,产生不同的执行结果
- 多态 可以 增加代码的灵活度
- 以 继承 和 重写父类方法 为前提
- 是调用方法的技巧,不会影响到类的内部设计
多态案例练习
需求
- 在
Dog
类中封装方法game
- 普通狗只是简单的玩耍
- 定义
XiaoTianDog
继承自Dog
,并且重写game
方法- 哮天犬需要在天上玩耍
- 定义
Person
类,并且封装一个 和狗玩 的方法- 在方法内部,直接让 狗对象 调用
game
方法
- 在方法内部,直接让 狗对象 调用
class Dog: def __init__(self, name): self.name = name def game(self): print("%s 很开心的玩耍..." % self.name)class XiaoTianQuan(Dog): def game(self): print("%s 飞到天上玩..." % self.name)class Person: def __init__(self, name): self.name = name def game_with_dog(self, dog): print("%s 和 %s 玩的停不下来" % (self.name, dog.name)) dog.game()xiaohuagou = Dog("小花狗")zfx = Person("张风闲")zfx.game_with_dog(xiaohuagou)xtq = XiaoTianQuan("哮天犬")zfx.game_with_dog(xtq)
案例小结
Person
类中只需要让 狗对象 调用game
方法,而不关心具体是 什么狗game
方法是在Dog
父类中定义的
- 在程序执行时,传入不同的 狗对象 实参,就会产生不同的执行效果
多态 更容易编写出出通用的代码,做出通用的编程,以适应需求的不断变化!