博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python面向对象学习(五)多态
阅读量:4948 次
发布时间:2019-06-11

本文共 927 字,大约阅读时间需要 3 分钟。

多态

多态:不同的 子类对象 调用相同的 父类方法,产生不同的执行结果

  • 多态 可以 增加代码的灵活度
  • 继承重写父类方法 为前提
  • 是调用方法的技巧,不会影响到类的内部设计

多态案例练习

需求

  1. Dog 类中封装方法 game
    • 普通狗只是简单的玩耍
  2. 定义 XiaoTianDog 继承自 Dog,并且重写 game 方法
    • 哮天犬需要在天上玩耍
  3. 定义 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 父类中定义的
  • 在程序执行时,传入不同的 狗对象 实参,就会产生不同的执行效果

多态 更容易编写出出通用的代码,做出通用的编程,以适应需求的不断变化!

转载于:https://www.cnblogs.com/zhangfengxian/p/python-polymorphic.html

你可能感兴趣的文章
WebLogic中"域"的概念
查看>>
zip文件解压或压缩
查看>>
PCB 线路板人生
查看>>
shell 通过EOF在脚本中输入需要的用户名或密码
查看>>
添加 Android Framework 到 Adt
查看>>
PencilWang博客目录
查看>>
Sentinel spring-cloud-gateway adapter(1.6)异常错误之@EnableCircuitBreaker
查看>>
position
查看>>
struct模块
查看>>
网络流(最大流) CodeForces 546E:Soldier and Traveling
查看>>
[转]dpkg 和 rpm 的常用方法比较
查看>>
The kth great number(hdu4006+优先队列)
查看>>
浅谈微信小程序
查看>>
Drools(BRMS) 速成教程(上)
查看>>
[svc]通过ssh tunnel连接内网ECS和RDS
查看>>
界面图片
查看>>
[翻译]深入理解Win32结构化异常处理(三)
查看>>
Java集合之HashMap
查看>>
SQL: Case when then
查看>>
sql 改字段名
查看>>