C++语言多态性的循序渐进教学方法研究.doc_第1页
C++语言多态性的循序渐进教学方法研究.doc_第2页
C++语言多态性的循序渐进教学方法研究.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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+中提供的解决方法是将基类定义一个抽象类,如员工类,在员工类中实现该类共有的操作。 抽象类是包含有一个或多个纯虚函数的类。纯虚函数是一种没有具体实现的虚函数。纯虚函数的作用是在基类中给派生类提供了一个函数名,为实现动态多态打下基础,派生类将根据自身需要给出纯虚函数的具体定义。抽象类是不能有实例对象的类,这样的类的唯一用途是被继承,由它作为一个类族的公共接口,反映该类族中各个类的共性。用抽象类实现上述实例的程序如下: 五、总结 多态的优点在于接口的统一,对不同的对象,只需要发出一个消息接口,不同的对象会根据自

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论