编程技术中多态性分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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照

文档评论(0)

docinpfd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档