一、继承和派生的基本概念
继承是C++语言中的一种重要的机制,也是面向对象的一个重要特征,实现了面向对象程序设计思想中软件复用的功能。继承的实质就是通过现有的类的特征,构造一个具有现有类特征的新类,这个新类成为派生类。派生类是从一个或者多个以前定义的类(基类)继承数据和函数,同时增加或者重定义数据和函数。这样就具有类的层次性。
另一方面,继承就是创建一个具有别的类的属性和行为的新类。继承和派生,通俗的讲,就是人们认识事物的过程。例如交通工具类就是一个基类,假如这个类有两个子类,分别是汽车类和轮船类。每个类有且仅有一个父类,而子类也仅有一个父类。
当从基类派生出新的类的时候,可以对新的类作如下几个变化:
1、可以增加新的成员变量
2、可以增加新的成员函数
3、可以重新定义已有的成员函数
4、可以改变现有的成员属性
二、基类和派生类的定义
C++中派生类的定义格式:
1: class 派生类名 : 访问控制 基类名
2: {
3: private:
4: 数据成员说明;
5: 函数成员说明;
6: protected:
7: 数据成员说明;
8: 函数成员说明;
9: public:
10: 数据成员说明;
11: 函数成员说明;
12: };
这里的类定义格式和一般的类定义格式一样,只不过需要在类名后添加访问控制盒基类名对继承性质进行说明。冒号表示这是一个派生类,而访问控制用于规定基类成员在派生类中的访问权限,即基类的成员在派生类中是公有的还是私有的。
例子:
1: //Location.h
2: #include<;iostream>
3: using namespace std;
4:
5: class Location
6: {
7: private:
8: int iPointX, iPointY;
9: public:
10: void SetPointX(int _iPointX)
11: {
12: iPointX = _iPointX;
13: }
14:
15: void SetPointY(int _iPointY)
16: {
17: iPointY = _iPointY;
18: }
19:
20: void ShowXY()
21: {
22: cout << "X = " << iPointX << " "
23: << "Y = " << iPointY << endl;
24: }
25: };
我们定义了一个Location类,进行数据成员和成员函数的声明的实现。下来我们定义派生类:
1: //Rectangle.h
2: #include"Location.h"
3:
4: class Recangle : public Location
5: {
6: private:
7: int iHigh, iWidth;
8: public:
9: void SetHigh(int _iHigh)
10: {
11: iHigh = _iHigh;
12: }
13: void SetWidth(int _iWidth)
14: {
15: iWidth = _iWidth;
16: }
17:
18: void ShowHW()
19: {
20: cout << "H =" << iHigh << " "
21: << "W =" << iWidth << endl;
22: }
23: };
基类的派生类定义好了,我们就可以在主程序里面进行调用了。
1: #include"Location.h"
2: int _tmain(int argc, _TCHAR* argv[])
3: {
4:
5: Recangle rect;
6:
7: rect.SetPointX(10);
8: rect.SetPointY(20);
9:
10: rect.SetHigh(30);
11: rect.SetWidth(40);
12:
13: rect.ShowXY();
14: rect.ShowHW();
15:
16: return 0;
17: }
这样我们就定义了一个基类的派生类,并且在主程序里进行了调用。