面向对象-多态与多态性
多态:同一种事物的多种形态,比如动物有,人,狗,猪。
多态性:不考虑实例类型的情况下直接使用实例
好处:
- 以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal)
- 增加程序可扩展性
动态多态性:
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
面向对象-多态与多态性相关推荐
- Python类的多态和多态性
很多人喜欢将多态与多态性二者混为一谈,然后百思不得其解,其实只要分开看,就会很明朗. 一.多态 多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承) 序列数据类型有多种形态 ...
- python中对多态和多态性的理解
一.多态 多态是指一类事物有多种形态,比如动物类,可以有猫,狗,猪等等.(一个抽象类有多个子类,因而多态的概念依赖于继承) import abc class Animal(metaclass=abc. ...
- Day20:绑定方法与非绑定办法、多态和多态性
一.绑定方法与非绑定方法 类中定义的函数分成两大类: 1.绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 1. 绑定到类的方法:用classmethod装饰器装饰的方法. 为类量身定 ...
- 三大特性--多态和多态性
多态和多态性 多态 多态指的是一类事物有多种形态 多态性 什么是多态性绑定(在继承的背景下使用时,也被称为多态性) 多态性是指在不考虑实例类型的情况下使用实例 在面向对象方法中一般是这样表述多态性:向 ...
- 类的继承,派生,组合,菱形继承,多态与多态性
类的继承 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类 继承的特性是:子类会遗传父类的属性 继承是类与类之间的关系 为什么用继承 使用继承可以减少代码的冗余 对象的继承 python中 ...
- 面向对象编程:多态性(C++)
面向对象编程:多态性(C++) 文章目录 面向对象编程:多态性(C++) 一.简介 二.类继承层次中对象之间的关系 三.抽象类和纯virtual函数 四.应用向下强制类型转换 五.virtual析构函 ...
- day8 Java学习(面向对象.多态接口)
面向对象 多态: 概述:事物存在的多种形态. 多态前提: *要有继承关系 *要有方法重写 *要有父类引用指向子类对象. 成员变量访问: 编译看左边(父类),运行左边(父类) ...
- Java面向对象 ----多态
java的第二部分 面向对象----多态 4.1面向对象的第三个特征: 多态定义: 多态可以理解为某一类事物的多种存在形态. 例如: 人 可以分为 男人 女人 动物 猫 狗 等 粮食 大米 小麦等 举 ...
- 头歌C++面向对象 - 类的多态性与虚函数
C++ 面向对象 - 类的多态性与虚函数 一.实训目的 1.掌握虚函数的基本使用. 2.掌握虚析构函数的使用. 3.掌握纯虚函数和抽象类的使用. 二.实训内容 1.人与复读机 设计人类.英语学生类和复 ...
最新文章
- mysql 用户管理表_Mysql—用户表详解(mysql.user)
- python打乱顺序的洗牌函数
- 【Java】命令行下的Java模块化建构、编译与执行
- ubuntu中由apt-get获得的文件包保存在哪里?
- form表单 1128
- 以小见大:如何设计注册登录页?
- html equls比较方法,编写高质量equals方法
- c 直接访问mysql_C语言访问MySQL数据库的方法
- pycharm 常用设置
- Android 属性动画(三)
- TCPIP详解之udp
- 一文搞懂vim复制粘贴
- github项目的JAVA项目Ratel,基于Netty实现
- Intriguing Properties of Contrastive Losses
- 状态模式、有限状态机 Unity版本实现
- 解决vue项目路由出现message: “Navigating to current location (XXX) is not allowed“的问题
- c#语言定义文档pdf,C#如何更改Word的语言设置.pdf
- js面向对象 —— ES6
- win11系统防火墙怎么关闭
- 【观影笔记】地平线:大数据时代(BBC)
热门文章
- ASP.NET MVC 4使用PagedList.Mvc分页
- 解决升级 Office 2010 之后 Outlook 提示“无法打开 Microsoft Outlook”
- Ubuntu创始人谈Windows 7、Chrome OS
- codeblocks运行结果输出的对话框字体太小的问题
- ubuntu linux下面用wine运行大航海时代4和最新版的QQ
- opengl 流程梳理
- vs 无法解析变量$_C语言新手常见错误(Vs使用,语法...),绝对直击痛点
- 训练softmax分类器实例_CS224N NLP with Deep Learning(四):Window分类器与神经网络
- python以缩进对齐的方式划分语句块_python以什么划分语句块
- 逐步加深的异步操作(上)