课件-class6继承派生_第1页
课件-class6继承派生_第2页
课件-class6继承派生_第3页
课件-class6继承派生_第4页
课件-class6继承派生_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

第六章

继承与多态刘志伟哈尔滨理工大学

WhyDerivation(继承)新的测试用例(Generator)对原有平台的改进(Environment)添加特定功能(共用库、Transactor)对已有基类进行扩展,生成新的子类派生从基类做扩展并创建新的派生类(子类)的过程,派生类继承了其基类的数据成员、方法,叫做继承多态派生类被创建后,基类的某些方法可以通过重写被重定义,此为重写当对象调用了被重写的方法,对象类型决定调用方法的实现方式,这是个动态的过程,则为多态继承与子类派生类(子类)的功能:继承了父类所有的属性修改类中原有的方法添加新的方法添加新的数据成员继承与子类继承的原则子类继承父类的所有成员、还可赠、改。必与基类原定义有一致的参数可通过super引用父类的成员和方法被声明为local的数据成员活方法只能

对自身可见被声明为protected的数据成员或方法只能对自身和子类可见继承实例SV的单一继承:每个子类只能有唯一的父类类的重写实例派生类的内存分配声明时为句柄,构造函数调用时分配空间除父类继承外,新添加数据成员和方法在独立空间中派生类的内存分配重写的函数在子类和父类中各保持一份复制子类对象与父类对象的赋值子类可以直接赋值给父类(upcasting)父类不能直接赋值给子类(downcasting)父类赋值给子类时,需用$cast(目标,源),并判定是否复制合法通过父类的对象去引用在子类中重写的属性或方法结果只会调用父类的属性或方法通过子类对象可以直接访问重写的属性或方法在子类扩展过程中新增的属性和方法对于父类对象不可见子类可以通过super操作符访问父类中的属性和方法,以区分本身重写的方法DerivedPacket中的new和所有重写的成员都是不可见的!子类对象引用父类的属性和方法,可使用super关键字.Supersuper.super.super.new是不合法的!构造函数的调用new()首先调用其父类的new()函数沿着继承关系一直回溯调用父类的初始化如果父类需要初始化:可使用super.new(param)进行初始化若在子类的构造函数中使用super.new则必须将其放在第一句虚方法与多态Answer:Packetpayld父类中的方法被调用,而不是重写的那个!重写的方法可见度子类中重写的方法对于父类不可见父类方法无法访问子类重写和新增的部分虚方法使用virtual关键字声明派生类中重写该虚方法,需要一致的类型和返回值虚方法虚方法虚方法虚方法虚方法虚方法实现多态父类中定义虚方法子类中重写父类的虚方法声明父类的对象当变量指向父类对象时,调用的是父类方法;当变量指向子类对象时,调用的是子类方法;指向不同对象时,表现出不同的实现方法,为多态,其本质是通过virtual动态查找。虚类从基类引申而来,但永远不会被实例化使用virtualclass将其抽象化,作为一个模板虚类的对象不可被直接构造使用可扩展为另一个类,但所有函数需重写,若有虚方法没有实现体,则子类也为抽象类纯虚函数purevirtualfunction虚类提供原型而无需具体实现只有虚类才可以定义纯虚方法虚类参数化的类为了加强通用性可以修改数组的大小可修改变量、数组的类型声明:使用:参数化的类参数化类的静态变量通用类和真实参数的组合被称作一个特例vector#(1)v1;vector#(2

温馨提示

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

最新文档

评论

0/150

提交评论