自学Python5.6-面向对象三大基本特征_多态
自学Python之路-Python基础+模块+面向对象
自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django
自学Python5.6-面向对象三大基本特征_多态
1.1 初识多态
多态指的是一类事物有多种形态。python语言天生支持多态。
# 举例在其他语言里面代码
class Alipay():
def pay(self,money):
print('已经用支付宝支付了%s元' % money)
class Applepay():
def pay(self,money):
print('已经用applepay支付了%s元' % money)
def pay(pay_obj,money): # 统一支付入口,此时pay_obj只能调用Alipay()或者class Applepay(),但是只能调用一种
pay_obj.pay(money)
在其他语音里面,多态应用:
# 举例在其他语言里面,多态应用
class Payment:
pass
class Alipay():
def pay(self,money):
print('已经用支付宝支付了%s元' % money)
class Applepay():
def pay(self,money):
print('已经用applepay支付了%s元' % money)
def pay(Payment.pay_obj,money): # 统一支付入口,此时pay_obj调用Payment,多态
pay_obj.pay(money)
在Python语音里面,多态:
# 举例在python语言里面
class Alipay():
def pay(self,money):
print('已经用支付宝支付了%s元' % money)
class Applepay():
def pay(self,money):
print('已经用applepay支付了%s元' % money)
def pay(pay_obj,money): # 统一支付入口,此时pay_obj接收所有参数
pay_obj.pay(money)
举例1:
比如动物有多种形态:人,狗,猪
import abc
class Animal(metaclass=abc.ABCMeta): #同一类事物:动物
@abc.abstractmethod
def talk(self):
pass
class People(Animal): #动物的形态之一:人
def talk(self):
print('say hello')
class Dog(Animal): #动物的形态之二:狗
def talk(self):
print('say wangwang')
class Pig(Animal): #动物的形态之三:猪
def talk(self):
print('say aoao')
举例2:
文件有多种形态:文本文件,可执行文件
import abc
class File(metaclass=abc.ABCMeta): #同一类事物:文件
@abc.abstractmethod
def click(self):
pass
class Text(File): #文件的形态之一:文本文件
def click(self):
print('open file')
class ExeFile(File): #文件的形态之二:可执行文件
def click(self):
print('execute file')
1.2 多态性
多态性是指在不考虑实例类型的情况下使用实例
在面向对象方法中一般是这样表述多态性:
向不同的对象发送同一条消息(!!!obj.func():是调用了obj的方法func,又称为向obj发送了一条消息func),不同的对象在接收时会产生不同的行为(即方法)
也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。
peo=People()
dog=Dog()
pig=Pig() #peo、dog、pig都是动物,只要是动物肯定有talk方法
#于是我们可以不用考虑它们三者的具体是什么类型,而直接使用
peo.talk()
dog.talk()
pig.talk() #更进一步,我们可以定义一个统一的接口来使用
def func(obj):
obj.talk()
多态指的是同一种事物的多种状态:水这种事物有多种不同的状态:冰,水蒸气
多态性的概念指出了对象如何通过他们共同的属性和动作来操作及访问,而不需考虑他们具体的类。
...
自学Python5.6-面向对象三大基本特征_多态的更多相关文章
- 自学Python5.7-面向对象三大基本特征_封装
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
- 自学Python5.5-面向对象三大基本特征_继承
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
- Java修炼——面向对象的三大特征_多态_多态的三个必要条件
多态指的是同一个方法调用,由于对象不同可能会有不同的行为,现实生活中,同一个方法,具体实现会完全不同. 多态的要点: 1.多态是方法的多态,不是属性的多态(多态与属性无关) 2.多态的存在有三个必要条 ...
- C#面向对象三大特性之三:多态
比起前面的封装和继承,多态这个概念不是那么好理解.我们还是从一个事例开始: 公司最近为了陶冶情操,养了几种动物(Animal),有猫(Cat).狗(Dog).羊(Sheep),这些动物都有共同的特性, ...
- 深入理解Java面向对象三大特性 封装 继承 多态
1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...
- OOP面向对象 三大特征 继承封装多态
OOP面向对象 ----三大特征 继承封装多态 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构 ...
- Java中面向对象三大特征
也就是说在这里"人"是多态的, 在不同的形态时,特征行为是不一样的, 这里的"人", 同时有两种形态,一种是教师形态,一种是学生形态,所对应的特征行为分别是&q ...
- java中的面向对象的三大基本特征
转载,原文来自http://blog.sina.com.cn/s/blog_5f79a56a0100c6ig.html 众所周知,java中的面向对象的三大基本特征是:[封装].[继承].[多态] 一 ...
- Java学习:面向对象三大特征:封装、继承、多态之封装性
面向对象三大特征:封装.继承.多态. 封装性在Java当中的体现: 方法就是一种封装 关键字private也是一种封装 封装就是将一些细节信息隐藏起来,对于外界不可见. 问题描述:定义Person的年 ...
随机推荐
- Setup Python 开发环境和IPython的基本使用
目录 目录 前言 软件准备 Python交互式Shell 为Python Shell添加补全功能 IPython-400 IPython功能和特性基础 可直接使用部分的Bash指令 别名alias语法 ...
- c# 匿名类型获取值
代码片段: 读取 new{ ....} 方法1:转换为json对象 dynamic model = SaleOrderServices.GetGiftOrderById(WebHelper.GetQu ...
- Redis 持久化配置(兼论瞎翻译的问题)
redis.conf 文件中配置 save 默认配置项: save save save 查了好几个地方都是这么说的: 第一句的意思:15分钟内修改了一个键就保存??? 往 Redis 里加了一个值,重 ...
- 数据库字段和实体类和map中对应类型
http://blog.csdn.net/sxe18652071425/article/details/46416217 地址 MySQL数据类型 JAVA数据类型 JDBC TYPE 普通变量类型 ...
- keystone 域-项目-用户-角色
https://docs.openstack.org/keystone/latest/ 官方文档 domain是认证边界,项目.用户属于域,然后通过角色把用户和项目关联起来. openstack ...
- 转SQLSERVER 会不会自动加锁
[SQL]提升查询效率与避免LOCK发生nolock: 可能把没有提交事务的数据也显示出来,可能会产生脏读readpast: 会把被锁住的行不显示出来 所有Select加 With (NoLock)解 ...
- C#析构函数(destructor)和终结器(Finalizer) .
使用析构函数释放资源 析构函数用于析构类的实例. 1) 不能在结构中定义析构函数.只能对类使用析构函数. 2) 一个类只能有一个析构函数. 3) 无法继 ...
- 基于nodeJS的小说爬虫实战
背景与需求分析 最近迷恋于王者荣耀.斗鱼直播与B站吃播视频,中毒太深,下班之后无心看书. 为了摆脱现状,能习惯看书,我开始看小说了,然而小说网站广告多而烦,屌丝心态不愿充钱,于是想到了爬虫. 功能分析 ...
- caoz的梦呓:信息安全,别为了芝麻丢了西瓜
猫宁!!! 参考链接:https://mp.weixin.qq.com/s/z6UI-tdhN1CGdqQQuglLVQ 对方公众号:caoz的梦呓 我之前写微博的时候,经常就有读者反馈说,你怎么用3 ...
- Java内存模型 (一)什么是进程?什么是线程?进程和线程之间的区别是什么?
什么是进程?什么是线程? 进程是系统中正在运行的一个程序,程序一旦运行就是进程. 进程可以看成程序执行的一个实例.进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间.一个进程无法访问另一个进程 ...