面向对象分析与设计 (2)优秀课件.ppt
《面向对象分析与设计 (2)优秀课件.ppt》由会员分享,可在线阅读,更多相关《面向对象分析与设计 (2)优秀课件.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象分析与设计第1页,本讲稿共36页 因此,我们在前面学习了类的定义和构造因此,我们在前面学习了类的定义和构造设计的基础上,应该进一步研究类之间的关系,设计的基础上,应该进一步研究类之间的关系,特别地应该学习类之间的继承性和派生性,以特别地应该学习类之间的继承性和派生性,以全面掌握全面掌握C+面向对象程序设计方法。面向对象程序设计方法。n本章的学习内容本章的学习内容继承的概念承的概念派生派生类的定的定义 派生派生类的构造函数和析构函数的构造函数和析构函数继承属性的承属性的访问权限控制限控制多多继承的概念承的概念 第2页,本讲稿共36页n类的继承:类的继承:就是根据就是根据一个类创建一个新类
2、一个类创建一个新类的过程。的过程。n类的派生:类的派生:从已有类从已有类产生新类的过程就是产生新类的过程就是类的派生。类的派生。n通常将用来派生新类通常将用来派生新类的类称为的类称为基类基类(或(或父父类类),而将派生出来而将派生出来的新类称为的新类称为派生类派生类(或(或子类子类)。n新类自动具有已有类新类自动具有已有类的所有成员,并可根的所有成员,并可根据需要添加更多的成据需要添加更多的成员。员。4.1 继承、派生和类的层次关系第3页,本讲稿共36页4.2 派生类派生类 n派生类派生类是在继承基类的属性和是在继承基类的属性和操作的基础上增添新的属性和操作的基础上增添新的属性和操作而产生的新
3、类。操作而产生的新类。n派生类是基类的特殊子类,基类派生类是基类的特殊子类,基类是抽取派生类的主要属性和操作是抽取派生类的主要属性和操作而得到的抽象描述。派生类继承而得到的抽象描述。派生类继承了基类的所有特性,但不等同于了基类的所有特性,但不等同于基类,否则就没有派生的必要了。基类,否则就没有派生的必要了。n继承关系体现了特殊与一般的继承关系体现了特殊与一般的关系。关系。第4页,本讲稿共36页n继承的一个作用继承的一个作用就是就是允许派生类在继承父允许派生类在继承父类共性的基础上,增类共性的基础上,增加新的属性和操作来加新的属性和操作来实现特殊功能;实现特殊功能;另一另一个作用是代码重用个作用
4、是代码重用,从基类派生子类,子从基类派生子类,子类无需修改基类的代类无需修改基类的代码,就可以直接拥有码,就可以直接拥有基类的成员,然后增基类的成员,然后增加少量代码就可以实加少量代码就可以实现特殊功能,这就实现特殊功能,这就实现了代码的重用。现了代码的重用。第5页,本讲稿共36页class:;其中,其中,有有三种:公有继承、私三种:公有继承、私有继承和保护继承,有继承和保护继承,分别用关键字分别用关键字public、private和和protected表示。缺省情况下为表示。缺省情况下为私有继承。私有继承。class person /基类基类protected:char name11;cha
5、r sex;int age;public:char*GetName();int GetSex();int Getage();class Student:public personprivate:char id9;float score;public:float GetScore();4.2.1 派生类的定义派生类的定义第6页,本讲稿共36页【例例4.1】派生类的定义派生类的定义 class A /定义一个基类定义一个基类A,A也称为超类、父类也称为超类、父类 int i;public:void set_i(int n)i=n;int get_i()return i;class B:public
6、 A /下划线处说明类下划线处说明类B将继承类将继承类A的公有成员的公有成员int j;public:void set_j(int n)j=n;int Multiply()return j*get_i();/可调用基类的可调用基类的get_i();/B不能访问不能访问A类的私有成员类的私有成员i。Main()B ob;ob.set_i(10);/初始化初始化ii,B可通过可通过A类的类的set_i()访问访问iob.set_j(4);/初始化初始化B中的中的j coutob.Multiply();/运行结果为运行结果为40return 0;第7页,本讲稿共36页n派生派生类的生成包含的生成包含
7、三个步三个步骤:(1 1)吸收基)吸收基类成成员 吸收基吸收基类的部分成的部分成员,不吸收构造函数不吸收构造函数和析构函数。它是和析构函数。它是一个重用一个重用过程。程。(2 2)改造基)改造基类成成员 一是通一是通过派生派生类定定义时的的继承方式来承方式来控制;控制;二是通二是通过定定义同名同名成成员屏蔽基屏蔽基类成成员。它是一个它是一个扩充充过程。程。4.2.2 派生类的生成过程派生类的生成过程 class person /基类基类 protected:char name11;char sex;int age;public:void Show();class Student:public
8、personprivate:float score;public:void Show()person:Show();coutscoreendl;第8页,本讲稿共36页(3 3)添加派生)添加派生类新成新成员 仅仅继承基承基类的成的成员是不是不够的,需要在的,需要在派生派生类中添加新成中添加新成员,以保以保证派生派生类在功能在功能上有所上有所发展。同基展。同基类的构造函数和析构函的构造函数和析构函数是不能被数是不能被继承的,承的,需要加入新的构造函需要加入新的构造函数和析构函数完成一数和析构函数完成一些特些特别的初始化和的初始化和扫尾清理工作。尾清理工作。class person /基类基类 p
9、rotected:char name11;char sex;int age;public:void Show();class Student:public personprivate:float score;public:void Show()person:Show();coutscoreendl;第9页,本讲稿共36页 4.3 4.3 访问权限控制限控制 从派生从派生类的定的定义格式可知,有三种格式可知,有三种继承方式:承方式:公有、私有和保公有、私有和保护。因此,派生。因此,派生类对基基类成成员的的访问权限控制也从三个方面考限控制也从三个方面考虑:(1)(1)公有公有继承的承的访问权限控制
10、限控制;(2)(2)私有私有继承的承的访问权限控制限控制;(3)(3)保保护继承的承的访问权限控制限控制;第10页,本讲稿共36页4.3.1 公有继承的访问权限控制公有继承的访问权限控制 当类的继承方式为当类的继承方式为公有继承时公有继承时:(1)在派生类中,基类的公有成员和保护成员在派生类中,基类的公有成员和保护成员被继承后仍然作为派生类的公有成员和保护被继承后仍然作为派生类的公有成员和保护成员,派生类的成员可以直接访问它们成员,派生类的成员可以直接访问它们;(2)基类的私有成员无法继承为派生类的私有基类的私有成员无法继承为派生类的私有成员或其他成员,因此派生类的成员无法成员或其他成员,因此
11、派生类的成员无法直接访问基类的私有成员。直接访问基类的私有成员。(3)在类外,派生类的对象只可以访问继在类外,派生类的对象只可以访问继 承下承下来的基类公有成员。来的基类公有成员。第11页,本讲稿共36页【例例4.1】公有继承的访问权限控制公有继承的访问权限控制class A /定义一个基类定义一个基类A,A也称为超类、父类也称为超类、父类 int i;public:void set_i(int n)i=n;int get_i()return i;class B:public A /下划线处说明类下划线处说明类B将继承类将继承类A的公有成员的公有成员int j;public:void set_
12、j(int n)j=n;int Multiply()return j*get_i();/可调用基类的可调用基类的get_i();/B不能访问不能访问A类的私有成员类的私有成员i。Main()B ob;ob.set_i(10);/初始化初始化i,B可通过可通过A类的类的set_i()访问访问iob.set_j(4);/初始化初始化B中的中的j coutob.Multiply();/运行结果为运行结果为40return 0;第12页,本讲稿共36页n当类的继承方式为当类的继承方式为私有继承时私有继承时:(1)在派生类中,基类的公有成员和保护成员被继承在派生类中,基类的公有成员和保护成员被继承以后将
13、作为派生类的私有成员,派生类的成员函数以后将作为派生类的私有成员,派生类的成员函数可以直接访问它们可以直接访问它们;(2)基类的私有成员没有被继承过来,因此派生类的基类的私有成员没有被继承过来,因此派生类的成员无法访问基类的私有成员成员无法访问基类的私有成员;(3)在类外,无法访问派生类对象中从基类继承的所有成在类外,无法访问派生类对象中从基类继承的所有成员。员。(4)私有继承之后,基类的成员再也无法在以后的私有继承之后,基类的成员再也无法在以后的派生类中发挥作用,出于这种原因,一般不使用私派生类中发挥作用,出于这种原因,一般不使用私有继承方式。有继承方式。4.3.2 私有继承的访问权限控制私
14、有继承的访问权限控制 第13页,本讲稿共36页例例4-2 私有继承举例私有继承举例#include#include class Person private:char name11;char sex;protected:int age;public:Person(const char*Name,int Age,char Sex);char*GetName()return name;int Getage();int GetSex;第14页,本讲稿共36页class Student:private Personprivate:char id9;float score;public:Student(
15、char*pName,int Age,char Sex,char*pId,float Score)void Display();void Student:Display()cout“name:”GetName()t/访问变为私有的基类成访问变为私有的基类成 员函数员函数 cout“id:”idt;/直接访问本类私有成员直接访问本类私有成员 cout“age:”aget;/访问基类的保护成员访问基类的保护成员(变为私有的变为私有的)cout“score:”scoreendl;void main()Student s2(“wang min”,20,m,”03410102”,80);s2.Displ
16、ay();第15页,本讲稿共36页4.3.3 保护继承的访问权限控制保护继承的访问权限控制 当当类的的继承方式承方式为保保护继承承时:(1)(1)在派生在派生类中,基中,基类的公有成的公有成员和保和保护成成员被被继承以后将承以后将作作为派生派生类的保的保护成成员,派生,派生类的成的成员可以直接可以直接访问它它们;(2)(2)基基类的私有成的私有成员没有被没有被继承,因此派生承,因此派生类的成的成员无法无法访问基基类的私有成的私有成员。(3)(3)在在类外,无法外,无法访问派生派生类对象中从基象中从基类继承的所有成承的所有成员。(4)(4)与私有与私有继承不同的是承不同的是,保保护继承承还没有完
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象分析与设计 2优秀课件 面向 对象 分析 设计 优秀 课件
限制150内