多态:同一种事物的多种形态,比如动物有,人,狗,猪。

多态性:不考虑实例类型的情况下直接使用实例

好处:

  1. 以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal)
  2. 增加程序可扩展性

动态多态性:

import abc
#给以下动物创建父类,只定义方法名,不写功能
class Animal(metaclass=abc.ABCMeta):#装饰器规定子类必须有该属性
    @abc.abstractmethoddef talk(self):pass
class People(Animal):#重写父类方法def talk(self):print('say hello')
class Pig(Animal):def talk(self):print('say wangwang')
class Dog:def talk(self):print('say aoao')
#实例化
peop1=People()
pig=Pig()
dog1=Dog()
#不考虑对象类型,直接使用实例
peop1.talk()
pig.talk()
dog1.talk()

创建接口,以不变应万变

#实例化
peop1=People()
pig=Pig()
dog1=Dog()
#创建接口,接口内部无需考虑对象类型
def func(animal):animal.talk()
#调用接口即可
func(peop1)
func(pig)
func(dog1)

静态多态性,如字符串操作方法'+'

python提倡使用“鸭子类型”,即看着像鸭子,不一定要继承父类

class File:def read(self):passdef write(self):pass
#创建Disk类型,创建得像File类型
class Disk:def read(self):print('disk read')def write(self):print('disk write')
#创建Text类型,创建得像File类型
class Text:def read(self):print('text read')def write(self):print('text write')
disk=Disk()
text=Text()
#使用方法就行File对象一样,read(),write()
disk.read()
disk.write()
text.read()
text.write()

转载于:https://www.cnblogs.com/yaya625202/p/8871831.html

面向对象-多态与多态性相关推荐

  1. Python类的多态和多态性

    很多人喜欢将多态与多态性二者混为一谈,然后百思不得其解,其实只要分开看,就会很明朗. 一.多态 多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承) 序列数据类型有多种形态 ...

  2. python中对多态和多态性的理解

    一.多态 多态是指一类事物有多种形态,比如动物类,可以有猫,狗,猪等等.(一个抽象类有多个子类,因而多态的概念依赖于继承) import abc class Animal(metaclass=abc. ...

  3. Day20:绑定方法与非绑定办法、多态和多态性

    一.绑定方法与非绑定方法 类中定义的函数分成两大类: 1.绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 1. 绑定到类的方法:用classmethod装饰器装饰的方法. 为类量身定 ...

  4. 三大特性--多态和多态性

    多态和多态性 多态 多态指的是一类事物有多种形态 多态性 什么是多态性绑定(在继承的背景下使用时,也被称为多态性) 多态性是指在不考虑实例类型的情况下使用实例 在面向对象方法中一般是这样表述多态性:向 ...

  5. 类的继承,派生,组合,菱形继承,多态与多态性

    类的继承 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类 继承的特性是:子类会遗传父类的属性 继承是类与类之间的关系 为什么用继承 使用继承可以减少代码的冗余 对象的继承 python中 ...

  6. 面向对象编程:多态性(C++)

    面向对象编程:多态性(C++) 文章目录 面向对象编程:多态性(C++) 一.简介 二.类继承层次中对象之间的关系 三.抽象类和纯virtual函数 四.应用向下强制类型转换 五.virtual析构函 ...

  7. day8 Java学习(面向对象.多态接口)

    面向对象    多态: 概述:事物存在的多种形态.  多态前提: *要有继承关系 *要有方法重写 *要有父类引用指向子类对象. 成员变量访问:           编译看左边(父类),运行左边(父类) ...

  8. Java面向对象 ----多态

    java的第二部分 面向对象----多态 4.1面向对象的第三个特征: 多态定义: 多态可以理解为某一类事物的多种存在形态. 例如: 人 可以分为 男人 女人 动物 猫 狗 等 粮食 大米 小麦等 举 ...

  9. 头歌C++面向对象 - 类的多态性与虚函数

    C++ 面向对象 - 类的多态性与虚函数 一.实训目的 1.掌握虚函数的基本使用. 2.掌握虚析构函数的使用. 3.掌握纯虚函数和抽象类的使用. 二.实训内容 1.人与复读机 设计人类.英语学生类和复 ...

最新文章

  1. mysql 用户管理表_Mysql—用户表详解(mysql.user)
  2. python打乱顺序的洗牌函数
  3. 【Java】命令行下的Java模块化建构、编译与执行
  4. ubuntu中由apt-get获得的文件包保存在哪里?
  5. form表单 1128
  6. 以小见大:如何设计注册登录页?
  7. html equls比较方法,编写高质量equals方法
  8. c 直接访问mysql_C语言访问MySQL数据库的方法
  9. pycharm 常用设置
  10. Android 属性动画(三)
  11. TCPIP详解之udp
  12. 一文搞懂vim复制粘贴
  13. github项目的JAVA项目Ratel,基于Netty实现
  14. Intriguing Properties of Contrastive Losses
  15. 状态模式、有限状态机 Unity版本实现
  16. 解决vue项目路由出现message: “Navigating to current location (XXX) is not allowed“的问题
  17. c#语言定义文档pdf,C#如何更改Word的语言设置.pdf
  18. js面向对象 —— ES6
  19. win11系统防火墙怎么关闭
  20. 【观影笔记】地平线:大数据时代(BBC)

热门文章

  1. ASP.NET MVC 4使用PagedList.Mvc分页
  2. 解决升级 Office 2010 之后 Outlook 提示“无法打开 Microsoft Outlook”
  3. Ubuntu创始人谈Windows 7、Chrome OS
  4. codeblocks运行结果输出的对话框字体太小的问题
  5. ubuntu linux下面用wine运行大航海时代4和最新版的QQ
  6. opengl 流程梳理
  7. vs 无法解析变量$_C语言新手常见错误(Vs使用,语法...),绝对直击痛点
  8. 训练softmax分类器实例_CS224N NLP with Deep Learning(四):Window分类器与神经网络
  9. python以缩进对齐的方式划分语句块_python以什么划分语句块
  10. 逐步加深的异步操作(上)