- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言多态性的循序渐进教学方法研究
C++语言多态性的循序渐进教学方法研究
来源:会务费发票 /
摘要:多态性是面向对象语言的关键技术,其使用方法是面向对象编程语言的教学难点之一。本文以应用实例为引导,循序渐进的介绍了C++语言中实现多态性的三种方式:重载函数方式,虚函数方式,抽象类方式,并给出了实例的相应代码实现,清晰明了的介绍了该教学难点。
关键词:多态;重载函数;虚函数;抽象类
一、引言
C++是一种继承了C语言的面向对象的程序设计语言。C++语言支持面向对象的程序设计,主要表现在它支持面向对象方法的三个主要特性:封装、继承、多态。多态指的是同一个函数名具有多种不同的实现,即不同的功能。多态性可描述为:将同一个消息发送给不同的对象时会产生不同的行为。这里的消息是指调用函数,不同的行为指函数的不同实现。多态是面向对象程序设计语言的一个难点,在教学过程过也是很多学生难以理解的知识点。从客观现实世界的直观形象引导会大大减轻多态学习的难度,本文用具体应用实例循序渐进的介绍C++语言中多态性的三种实现方式。
二、以重载函数方式实现多态
在C语言中,每个函数必须有一个唯一的名字。例如求一个数的绝对值,由于参数的数据类型不同,需要如下一组函数:int abs(int), long labs(long), double dabs(double)。这些函数的功能相同,都是求一个数的绝对值。但由于不同的函数名,调用起来很不方便。在实际的编程中,会碰到诸多这样的实例,因此考虑是否可以给这些函数起一个名字,只是它们各自的函数体不同,对应着不同类型的参数。在C++语言中,引进了重载函数,允许同一个函数名对应着不同的实现。
重载函数,由于待处理参数的类型或个数不同,编写一组功能不同而名字相同的函数,即允许同一个函数名对应着不同的实现。上例中的求绝对值,给上述求绝对值的函数起一个名字abs,上述三个函数表示如下:int abs(int), long abs(long), double abs(double)。这三个同名函数对应着不同的实现,即各自有自己的函数体。重载函数至少在函数的参数类型、参数个数和参数顺序上有所不同。根据重载函数的参数类型、参数个数和参数顺序的不同选择调用具体的函数实现。利用重载函数实现多态,在编译时就能确定哪个重载函数被调用的。
三、以虚函数方式实现多态
实际生活存在这样的例子:老板让所有员工在九点钟开始工作, 他只要在九点钟的时候说:“开始工作”即可,而不需要对销售人员说:“开始销售工作”,对技术人员说:“开始技术工作”,只要是员工就可以开始工作,他知道这一点就行了。至于每个员工,当然会各司其职,做各自的工作,可用int beginWork()函数来实现,但所有员工的beginWork()函数的返回值、参数个数、参数类型、参数顺序都相同,要实现的功能却不同,通过函数重载也解决不了此类问题,在C++中用虚函数来实现此类多态性。
虚函数是可有多种不同实现的非静态成员函数。即虚函数是在基类中被关键字virtual说明,并在派生类中重新定义的非静态函数。说明虚函数的格式如下:virtual 函数返回值类型 成员函数名(参数列表)。上述实例用虚函数实现如下:
运行结果为:
寻找潜在客户,推销产品!
分析碰到的技术问题,解决问题!
由上例可看出虚函数的作用是通过基类指针或引用访问基类和派生类中被说明为虚函数的同名函数。虚函数在编译的时候确定不了调用的具体函数实现,只有在运行时才能根据对象的类型确认调用哪个函数。基类中说明的虚函数,通常要在派生类中进行重新定义。如果派生类中没有对基类的虚函数重新定义,则派生类简单的继承基类的虚函数。
四、以抽象类方式实现多态
按上面的例子进行编程,所有类型都继承销售员工类,则销售员工自己特定的成员函数,比如“double 计算销售提成()”也都被技术员工继承下来了,虽然不影响技术员工的操作,但是随时间延续,销售员工类中成员函数越来越多,技术员工类中冗余的方法就越来越多了,有什么办法可以解决?C++中提供的解决方法是将基类定义一个抽象类,如员工类,在员工类中实现该类共有的操作。
抽象类是包含有一个或多个纯虚函数的类。纯虚函数是一种没有具体实现的虚函数。纯虚函数的作用是在基类中给派生类提供了一个函数名,为实现动态多态打下基础,派生类将根据自身需要给出纯虚函数的具体定义。抽象类是不能有实例对象的类,这样的类的唯一用途是被继承,由它作为一个类族的公共接口,反映该类族中各个类的共性。用抽象类实现上述实例的程序如下:
五、总结
多态的优点在于接口的统一,对不同的对象,只需要发出一个消息接口,不同的对
您可能关注的文档
- (宋)数列典型题.doc
- (7`8)节 模具设计与制造.doc
- (修改稿)毕业生就业派遣流程说明(2011-12-01).ppt
- (基础班)等差数列及其前n项和.doc
- (参考)2002年四川大学机械原理考研试题.pdf
- (98份)四年级英语(下)第一单元练习.doc
- (人民版)历史必修一专题8--3 俄国十月社会主义革命.ppt
- (A4)第四章 物态变化寒假测试题.doc
- -探究提高初中生英语写作能力方法.doc
- (预备周)第1课 人类的形成.ppt
- DB44_T 2611-2025 城市排水管网有毒有害气体监测与风险分级管理技术标准.pdf
- DB44_T 2612-2025 竞赛类科普活动策划与实施服务规范.pdf
- DB43_T 2947-2024 烟草种子质量控制规程.pdf
- DB37_T 4836-2025 煤矿风量实时监测技术要求.pdf
- 叉车防撞系统,全球前22强生产商排名及市场份额(by QYResearch).docx
- 超滤膜,全球前18强生产商排名及市场份额(by QYResearch).docx
- DB62T 4172-2020 玉米品种 酒623规范.pdf
- DB62T 4160-2020 在用真空绝热深冷压力容器综合性能在线检测方法.pdf
- DB62T 4164-2020 辣椒品种 酒椒1号.pdf
- DB62T 4133-2020 公路隧道地质超前预报机械能无损探测技术规程.pdf
文档评论(0)