C++ 派生与继承(一)
2015-08-15 02:22
567 查看
目录
一、派生与继承概念
二、派生类声明方式
三、 派生类的构成
(1)从基类接收成员。
(2)调整从基类接收的成员。
(3)在声明派生类时增加成员,它体现了派生类对基类功能扩充。
(4)在声明派生类时,还要自己定义派生类的构造函数。
四、派生类成员的访问属性
1、公有继承
2、私有继承
3、保护继承
4、多级派生时的访问属性
-------------------------------------------------------------------------------------------------------面向对象程序设计有四个主要特点:抽象、封装、继承和多态性。
一、派生与继承概念
通过继承机制,可以利用已有的数据类型来定义新的数据类型。
所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧成员。
我们称已存在的用来派生新类的类为基类,又称为父类。
已存在的类派生出的新类称为派生类,又称为子类。
C++的继承机制实现软件可重用。有时两个类的内容基本相同或有一部分相同造成冗余。
一个基类可以派生出多个派生类,每个派生类又可以作为基类再派生出新的派生类。
一个派生类只从一个基类派生,称作单继承。
一个派生类也可以从多个基类派生,也就是说一个派生类可以两个或两个以上基类。
一个派生类有两个或多个基类的称作多重继承。
基类和派生类的关系可以表述为:派生类是基类的扩充,而基类是派生类的抽象。
二、派生类声明方式
使用派生类要先声明,声明的格式为:
class 派生类名:[继承方式]
基类名
{
派生类新增成员声明……
};
继承方式包括:public,private,protected。
如果省略,系统默认为private。
三、派生类的构成
派生类中的成员包括从基类继承过来的成员和自己添加的成员。
继承基类成员体现了同一基类的派生类都具有的共性,而新增加的成员体现了派生类的个性。
(1)从基类接收成员。
派生类将基类除构造函数和析构函数外的所有成员接收过来。
(2)调整从基类接收的成员。
一方面可以通过继承方式改变基类成员在类中的访问属性,
另一方面可以在派生类中声明一个与基类成员同名的成员屏蔽基类的同名成员,
注意如是成员函数不仅要函数名相同,而且函数的参数也要相同,屏蔽的含义就是用新成员取代旧成员。
(3)在声明派生类时增加成员,它体现了派生类对基类功能扩充。
(4)声明派生类时,还要自己定义派生类的构造函数。
四、派生类成员的访问属性
派生类中包含了基类成员和派生类成员,就产生了这两部分的关系和访问属性的问题。这个关系由基类成员的访问属性和类的继承方式组合决定。
1、公有继承
当派生类的继承方式为public(公有)属性时,在派生类中,基类的公有成员和保护成员在派生类中的访问属性没有变化,即分别作为派生类的公有成员和保护成员,派生类的成员可以直接访问它们。但是派生类的成员无法直接访问基类的私有成员。保护私有成员是一条重要的原则。
2、私有继承
在派生类中,基类的公有成员和保护成员作为派生类的私有成员,派生类的成员可以直接访问它们,而派生类的成员无法直接访问基类的私有成员。
在派生类的外部,派生类的对象无法访问基类的全部成员。
私有继承后,全部基类成员在派生类中都成为了私有或不可访问的成员,无法进一步派生。私有继承方式一般很少使用。
3、保护成员和保护继承
当派生类的继承方式为proctected继承属性时,
在派生类中,基类的公有成员和保护成员均作为派生类的保户成员,派生类的成员可以直接访问它们,而派生类的成员无法访问基类的私有成员。在派生类的外部,派生类的对象无法访问基类的全部成员。
如果基类只进行一次派生,则保护继承和私有继承的功能完全相同。
但保护继承可以进一步派生,而私有继承则不可以,两者具有实质性差别。
相关文章推荐
- 八种排序算法(C语言简易版)
- 快速排序的C++实现
- BAT 批处理脚本 教程
- 黑马程序员—-C语言入门十重奏之十renascence
- 奋笔疾书C++之CareerCup——面试前期准备
- 黑马程序员—-C语言入门十重奏之九相守
- C++模板(一)
- 黑马程序员—-C语言入门十重奏之八相念
- hdu1548 最短路/BFS
- 【C语言经典实例】-冒泡法排序
- 贪心算法New Year BonusGrant
- 关于C++虚函数表的那些事儿
- VC++ AfxBeginThread 与 CreateThread 的区别
- C++ 排序函数 sort(),qsort()的用法
- C++文件处理
- C++文件读写函数之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind
- c++ primer plus 第七章-编程题7.13.5《求任意一个数的阶乘》
- 排序算法_C++(一)插入排序之直接插入排序
- C语言实现单链表增删查找等功能
- 面向对象程序设计三个基本特征(C++)