- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编程技术中多态性分析.doc
面向对象编程中的多态性
----季松华
【基于c++,java概念上基本完全一样,只是在实现上有些细微差别
基本数据类型:整数、浮点数、字符等
运算符:加减乘除等】
目前,面向对象编程非常的流行,面向对象编程有三大特征,分别是 封装、继承和多态性
本课堂主要讨论 多态性
什么是多态性?
一:多态性定义
多态性,按字面理解就是多种形状,比如有生物多态性,基因多态性等等
计算机编程中的定义:相同的方法调用可实现不同的实现方式,简单点说就是“一个接口,多种方法”
举一个例子,计算机硬件里面的输入输出设备,我们统称为I/O设备,而具体的设备实体 输入的有键盘、鼠标、扫描仪等等,输出的有显示器、打印机、音响等等,这个例子中的I/O设备就是一个统一的接口,而键盘、显示器呢就是具体的实现,
(堆栈可以存储各种格式的数据,包括整型,浮点或字符。
不管存储的是何种数据,堆栈的算法实现是一样的。针对不同的数据类型,编程人员不必手工选择,只需使用统一接口名,系统可自动选择。)
下面讨论多态性在我们编程中的表现形式
二:多态性表现形式:
主要有以下4中:强制多态、重载多态、类型参数化(模板)多态以及包含多态
强制多态性:强制是指两种不同的数据类型进行转换的一种语义操作;
程序设计语言中基本数据类型的大多数操作符,在发生不同类型的数据之间混合运算时,一般都会进行强制类型转换,以符合函数或操作符的要求,即隐式的转换
程序员也可以显示的进行强制操作,即显示的转换
比如说 整形 与 浮点型 相加,
3+3.14
通过转换,实现了一个接口(某种数据类型)多种实现(多种数据类型)
重载多态性:重载包括运算符重载和函数重载,编译系统根据参数类型及个数的最佳匹配,自动确定调用哪一个函数,就是函数重载,相应的,对于已有的运算符赋予 多重含义,使得同一个运算符作用于不同的数据时,产生不同的行为,就是运算符重载
运算符重载:有两种,一种是重载为类的成员函数,一种是重载为类的友元函数,
面向对象编程中有一个很重要的概念,类,类的实例就是对象,在进行对象与基本数据类型运算的时候,常常需要进行操作符重载,为什么?基本数据类型都是已经定义好的,它们之间的运算都是可以预知的,比如一个整数与浮点数相加3+3.14,结果可不可以预知?可以的,系统能知道应该产生什么样的结果 6.14吧
而一个对象与对象相加或者一个对象与一个基本数据类型相加,系统能知道应该产生什么样的结果吗?比如“人”这样一个对象与整数3相加,你能知道是年龄加3呢还是身高加3?不知道的,所以要进行运算符重载,那么你可以重载为 年龄加3而不是身高加3
通过这种方法,就为 “加法运算” 这一种接口符实现了不同的行为
函数重载:允许功能相近的的函数在相同的作用域内同名定义,这样就比较方便记忆,便于使用,程序设计也就更加灵活
函数重载,就是同名函数,函数名字相同,参数类型不同或者个数不同或者两者都不同
[C语言中没有函数重载这个概念,c++/java中有,]
举一个例子,实现加法运算的函数,取名为sum,带两个参数
可以是两个整形,浮点型,字符串
这就是多态性的表现,一种接口,多种方法
类型参数化多态:有模板函数,模板类;当一个函数(类)统一的对若干类型参数操作,这些类型又表现出某些公共的语义特性时,就可以用模版函数或模板类来描述。这就是参数类型多态。
模板函数、模版类的定义方法参考相关的书籍,本处不再赘述。
【模版函数
Template template T
T add ( T a, T b )
{
Return a+b;
}
模板类
Template tmplate T
Class A
{ T j;
Public:
A(T a){ j = a; }
};
】
模板技术的多态性是最好理解的,也称为最纯的多态
一个模板就是一个接口,通过对模板的演化,就可以产生许许多多的具体的实现方法
需要注意的是:在 类型参数化多态中,一个多态函数(类)必须至少带一个类型参数,该类型参数确定函数(类)在每次执行时操作数的类型,
包含多态:基础是继承和虚函数,也是常说的面向对象编程中的的多态技术,虚函数是引入了派生概念后,用来表现基类和派生类的成员函数之间的一种关系的,其为c++语言提供了灵活的多态实现机制,
虚函数在基类中定义,需要定义为虚函数的成员函数在其声明中加上关键字virtual,
举一个例子 父类 汽车,有一个接口 方法:驾驶 ,派生类 卡车,小轿车,分别实现了各自的驾驶方法
好,现在,定义一个父类汽车的指针(或引用),当该指针(或引用)对应于卡车时,驾驶表现的是卡车的驾驶技术,当该指针(或引用)对应于小轿车时,驾驶表现的是小轿车的驾驶技术,大家知道,小轿车是拿的是c照,卡车可能就是A照
您可能关注的文档
最近下载
- 基于abaqus的钢筋混凝土结构损伤塑性模型.docx VIP
- 医学课件-皮肤软组织感染.pptx VIP
- 2024年江苏赛区复赛“扬子石化杯”第38届中国化学奥林匹克(初赛)选拔赛暨化学试题含答案.pdf VIP
- 食材分拣、包装、运输、验收、售后整体配送服务方案.docx VIP
- 《华为数字化转型之道》实践经验分享试题附答案.doc
- 2025年辽宁省政府采购评审专家考试测试题及答案.docx VIP
- GB50054-2011低压配电设计规范.docx VIP
- 油漆来料检验报告.docx VIP
- GB 50054-2011 低压配电设计规范.docx VIP
- 人教版劳动教育六年级上册全册教案教学设计.pdf VIP
文档评论(0)