面向对象程序设计_第1页
面向对象程序设计_第2页
面向对象程序设计_第3页
面向对象程序设计_第4页
面向对象程序设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、课程 要求,课程 内容,课程 练习,参考 书目,面向对象程序设计,课程内容,课程要求,参考书目,返回首页,面向对象程序设计,继承,派生类中构造和析构函数,单一继承,概述,面向对象程序设计,概述*,引言一:编程中的代码重复,2-16,class CPerson public: void print(); private: char name10; int age; char sex; ;,class CEmployee public: void print(); private: char name10; int age; char sex; char department20; float s

2、alary; ;,面向对象程序设计,概述,引言二:泛化/特化 面向对象编程的三种机制 数据抽象 泛化/特化 多态 泛化是一种在保存类的差异的同时共享类的相似性的抽象机制,2-16,在面向对象的分析与设计中,泛化/特化机制 是从已有的类派生新的类的机制。 在面向对象的编程中,通过继承实现泛化/特化,面向对象程序设计,概述,继承 是指从一个或多个基类中继承数据结构和操作,形成新的派生类的一种机制。 继承其实是一个类与该类的一个或多个精化版本之间的关系。被精化的类是超类(基类、父类),每一个精化版本成为子类(派生类),2-16,面向对象程序设计,概述,2-16,基类(父类),派生类(子类),面向对象

3、程序设计,概述,2-16,直升飞机,喷气 战斗机,导弹,发射导弹,面向对象程序设计,概述*,分类 单一继承 多重继承,2-16,单一继承,多重继承,back,面向对象程序设计,单一继承*,派生类声明的格式(单一继承),2-16,class 派生类名:派生方式 基类名 ;,1、派生方式在public、private、protected中选择, 缺省时默认为private。 2、派生类只能继承基类中的公有成员和保护成员, 而不能继承私有成员 3、构造函数、析构函数、友元关系、重载的new 和delete运算符是不可继承的,面向对象程序设计,单一继承,基类成员在派生类中的访问属性,2-16,面向对象

4、程序设计,单一继承,2-16,派生类,class person public: person(char *n,int a); char * getname(); int getage(); void setname(char *n); void setage(int a); private: char name40; int age,height,weight;,memo,面向对象程序设计,单一继承,服务和属性的继承关系,2-16,面向对象程序设计,对各种继承方式的讨论,公有派生 继承方式,2-16,面向对象程序设计,对各种继承方式的讨论,2-16,class CDerived:public

5、CBase int len,wid; public: CDerived(int a,int b) len=d; wid=e; void show() coutlenwidendl; coutx=Getx(); coutty=y; couttz=zendl; int sum() return Getx()+y+z+len+wid; ;,memo,面向对象程序设计,对各种继承方式的讨论,私有派生,2-16,面向对象程序设计,对各种继承方式的讨论*,2-16,class CBase protected:int a; public: int b; void set(int x, int y) a=x;

6、 b=y; void Show() coutabendl; ;,class CDerived:private CBase public:void setD(int x,int y) set(x,y); void showD() coutabendl; ;,back,memo,面向对象程序设计,派生类的析构与构造函数*,对执行次序的讨论,2-16,构造函数:首先执行基类的构造函数,再执行 派生类的构造函数。析构函数:先执行派生类的析构函数,再执行 基类的,class base public: base() cout“base”endl; base() cout“base”endl; ;,clas

7、s derive:public base public: derive() cout“derive”endl; derive() cout“derive”endl; ;,面向对象程序设计,派生类的析构与构造函数,对构造规则的讨论 派生类构造函数定义形式:,2-16,如果有多个基类,则冒号后面可以用以下形式:基类1(参数表),基类2(参数表) 各个基类的次序与运行结果无关,派生类名(参数表):基类名(参数表),构造规则,面向对象程序设计,派生类的析构与构造函数,派生类含有对象成员 构造函数定义形式:,2-16,如果有多个基类和多个对象,则冒号后面可以用以下形式:基类1(参数表), 基类2(参数表

8、),对象成员1(参数表),对象成员2(参数表),派生类名(参数表):基类名(参数表),对象成员(参数表),面向对象程序设计,派生类的析构与构造函数,派生类含有对象成员 构造函数执行顺序如下: 基类的构造函数 对象成员的构造函数 派生类的构造函数 析构函数的执行次序与上述相反,2-16,面向对象程序设计,派生类的析构与构造函数,2-16,派生类含有对象成员,class A int a; public: A(int i) a=i; coutAendl; A() coutAendl; ;,class base int x; public: base(int i) x=i;coutbasexendl; base() coutbasexendl;,memo,面向对象程序设计,派生类的析构与构造函数,小结,2-16,若基类使用缺省构造函数或不带参数的构造函数,则派生类中定义的构造函数可以省略冒号后面部分,派生类也可不定义构造函数,基类构造函数不带参数,派生类不一定需要定义构造函数,但是当基类的构造函数有参数,所有的派生类

温馨提示

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

评论

0/150

提交评论