面向对象三大特性

封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中

定义类的准则

继承 实现代码的重用,相同的代码不需要重复的编写

设计类的技巧

子类针对自己特有的需求,编写特定的代码

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

多态 可以 增加代码的灵活度

以 继承 和 重写父类方法 为前提

是调用方法的技巧,不会影响到类的内部设计

多态案例演练

需求

在 Dog 类中封装方法 game

普通狗只是简单的玩耍

定义 XiaoTianDog 继承自 Dog,并且重写 game 方法

哮天犬需要在天上玩耍

定义 Person 类,并且封装一个 和狗玩 的方法

在方法内部,直接让 狗对象 调用 game 方法

案例小结

Person 类中只需要让 狗对象 调用 game 方法,而不关心具体是 什么狗

game 方法是在 Dog 父类中定义的

在程序执行时,传入不同的 狗对象 实参,就会产生不同的执行效果

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

class Dog(object):

def __init__(self, name):

self.name = name

def game(self):

print("%s 蹦蹦跳跳的玩耍..." % self.name)

class XiaoTianDog(Dog):

def game(self):

print("%s 飞到天上去玩耍..." % self.name)

class Person(object):

def __init__(self, name):

self.name = name

def game_with_dog(self, dog):

print("%s 和 %s 快乐的玩耍..." % (self.name, dog.name)) # dog是wangcai # wangcai是XiaoTianDog的实例对象 # dog.name是调用父类方法

# 让狗玩耍

dog.game()

# Person 类中只需要让 狗对象 调用 game 方法,而不关心具体是 什么狗

# game 方法是在 Dog 父类中定义的

# 在程序执行时,传入不同的 狗对象 实参,就会产生不同的执行效果

# 1. 创建一个狗对象

# wangcai = Dog("旺财")

wangcai = XiaoTianDog("飞天旺财")

# 2. 创建一个小明对象

xiaoming = Person("小明")

# 3. 让小明调用和狗玩的方法

xiaoming.game_with_dog(wangcai)

# 小明 和 飞天旺财 快乐的玩耍...

# 飞天旺财 飞到天上去玩耍...

python多态_Python多态相关推荐

  1. python多态_Python 多态与抽象类

    一.多态 1.1 什么是多态 多态也称"多态性",指的是同一种类型的事物,不同的形态. 在python中的多态指的是让多种类若具备类似的数据属性与方法属性,都统一好命名规范,这样可 ...

  2. python多态_python多态和规范

    python规范(接口类) 接口类可以规范代码,但接口类本身是不实现的 class Payment: def pay(self,money): raise Notlmplemented class W ...

  3. python多态_python 多态

    第一类多态: from cat import Cat from mouse import Mouse from person import Person ''' 多态:一种事物的多种形态 最终目标:人 ...

  4. python 多态_Python中的多态

    面向对象的语言有四个特性,抽象.封装.继承和多态.在之前的文章中,给小伙伴们已经讲解了前三个.为什么要把多态放在最后一个讲呢?因为前面的三个特性是多态的基础,了解了前三个,了解多态就很容易啦~ 那么, ...

  5. 浅谈python使用多态跟不用多态的区别_python 多态和 super 用法

    python 中的多态实现非常简单,只要是在子类中实现和父类同名的方法,便能实现多态,如果想在子类中调用父类的方法,有多种方法,但是当涉及菱形继承等问题是,super 就成为了比较好的解决方案. 普通 ...

  6. python中的多态用法_Python面向对象之多态原理与用法案例分析

    本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...

  7. python继承和多态心得_python学习第十五天 -面向对象之继承和多态

    大家都知道面向对象的三大特性:封装,继承,多态.封装特性在上一章节已经讲解过.这一章节主要讲解继承和多态. 继承:当定义一个类的时候,可以从现有的类进行继承.那么新定义的类可以称为子类,被继承的现有的 ...

  8. python封装继承多态_Python:封装、继承、多态、私有成员

    Python作为一种面向对象语言,也有着面向对象的三种特性:封装.继承.多态. 封装: 将事物相关的属性和方法封装在某一个类里面,使得在调用类创建实例时,可以不用关心类内部的实现细节. 类的本质: 1 ...

  9. python中的多态是什么_Python中的多态

    python中的多态是什么 Polymorphism is a concept of Object Oriented Programming, which means multiple forms o ...

最新文章

  1. 高手都这么给 Spring MVC 做单元测试!
  2. 可搜索本机文档内容软件:anytext(批量检索文档内容)(不是很好用,推荐用filelocator)
  3. 使用RSA算法生成令牌
  4. 洛谷 P3391 文艺平衡树
  5. Eureka实例自动过期
  6. tomcat下多个app 不同的图标_iOS平台设计规范(五)图标与图片
  7. php 绘图 jpeg,PHP gd库增加jpeg支持
  8. mysql查询语句有点难_Mysql惯用函数,难点,注意_mysql
  9. ngnix集群产生的问题
  10. java读流方式,下载网络上的图片
  11. JSK-11 移除数组中的重复元素【入门】
  12. centos 安装tmux
  13. 对称加密算法和非对称加密算法的区别
  14. C语言如何作用于unity,在Unity 3D中使用C进行车轮转向#
  15. css实现手风琴图片特效
  16. JetBrain IDEA 文件自动定位到打开文件位置
  17. 入侵防御系统特征库升级
  18. 设备扩展(DEVICE_EXTENSION)
  19. 【源码阅读】SIR-GN: A Fast Structural Iterative Representation Learning Approach For Graph Nodes
  20. 华为中标广东电信IPTV项目

热门文章

  1. Source Insight基本教程
  2. 机器学习——分级聚类法介绍及其Python实现
  3. Kubernetes如何使用ReplicationController、Replica Set、Deployment管理Pod
  4. named域名解析服务启动失败解决方法
  5. 【cocos creator】场景加载跳转代码,排行代码
  6. 自制软件--录屏大师
  7. uniapp 时间带T或者Z去除掉
  8. 数据库笔记-sql执行顺序以及检索优先级
  9. Python教学 | Python 中的循环结构(上)【附本文代码和数据】
  10. HM各个类中保存的数据类型以及之间的联系