- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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++中提供的解决方法是将基类定义一个抽象类,如员工类,在员工类中实现该类共有的操作。
抽象类是包含有一个或多个纯虚函数的类。纯虚函数是一种没有具体实现的虚函数。纯虚函数的作用是在基类中给派生类提供了一个函数名,为实现动态多态打下基础,派生类将根据自身需要给出纯虚函数的具体定义。抽象类是不能有实例对象的类,这样的类的唯一用途是被继承,由它作为一个类族的公共接口,反映该类族中各个类的共性。用抽象类实现上述实例的程序如下:
五、总结
多态的优点在于接口的统一,对不同的对象,只需要发出一个消息接口,不同的对象会根据自身的特点实施不同的动作。支持多态的编程语言具有灵活、抽象、行为共享的优势,很好的解决了应用程序函数同名
您可能关注的文档
- 3+2护理专业《社区护理学》教学探析.doc
- 300MW机组给水控制探究.doc
- 306例妇女宫颈检查及宫颈刮片调查及研究.doc
- 308 nm准分子光配合内服黑素再生液治疗白癜风疗效观察.doc
- 30例2型糖尿病合并高血压患者诊治研究.doc
- 308nm准分子激光联合他克莫司软膏治疗白癜风随机对照探究.doc
- 30例乙醇中毒患者临床护理.doc
- 30例妇产科手术切口感染病因研究及预防对策.doc
- 30例糖尿病水疱病观察及护理.doc
- 30例感染性腹泻预防及护理.doc
- C-反应蛋白-腺苷脱氨酶-CA125糖类抗原在胸腔积液良恶性鉴别中意义研究.doc
- C-臂机下尺骨干骨折手法闭合复位克氏针内固定在治疗中应用.doc
- C2C模式下物流研究及联合发展策略.doc
- C3肾小球肾炎临床研究探究.doc
- Braden评分在老年骨折患者护理中应用探究.doc
- CAI在教学应用中误区及改进策略.doc
- BiPAP呼吸机治疗COPDII型呼吸衰竭并昏迷患者疗效研究.doc
- Canon imageCLASS MF4870dn激光多功能一体机.doc
- CAP技术在沥青混凝土路面水损害防治上应用.doc
- Caveolae-caveolin-1及Wnt-β-catenin通路.doc
文档评论(0)