继承与派生(一)
1.继承与派生的概念
在C++中所谓继承就是在一个已经存在的类的基础上建立一个新的类,从已有类获得已有的特性,这就是类的继承。从已有类(父类)产生一个新的子类,称为类的派生。派生类继承了基类的所有数据成员和成员函数,并可以对成员作必要的增加和调整。一个派生类只从一个基类派生,这称为单继承。一个派生类有两个或多个基类的称为多重继承。派生类是基类的具体化,而基类则是派生类的抽象。
2.派生类的声明方式
声明派生类的一般形式为:
class 派生类名:[继承方式] 基类名
{
派生类新增加的成员
};
下面给出一个派生类声明的示例,Student是基类,Student1是派生类。public表示基类Student中的成员在派生类Student1中的继承方式。继承方式包括:public(公用的),private(私有的)和protected(受保护的)。默认继承方式是private。
#include<iostream>
#include<string>
using namespace std;
//例11.1 访问公有基类的成员
class Student{ //声明基类
public: //基类公用成员
void get_value() { //输入基类数据的成员函数
cin >> num >> name >> sex;
}
void display() { //输出基类数据的成员函数
cout << " num:" << num << endl;
cout << " name:" << name << endl;
cout << " sex:" << sex << endl;
}
private: //基类私有成员
int num;
string name;
char sex;
};
class Student1 :public Student { //以public方式声明派生类Student1
public:
void get_value_1() { cin >> age >> addr; } //输入派生类数据
void display_1() {
cout << " age:" << age << endl; //引用派生类的私有成员,正确
cout << " address:" << addr << endl; //引用派生类的私有成员,正确
}
private:
int age;
string addr;
};
3.派生类的构成
派生类中的成员包括从基类继承过来的成员和自己增加的成员两大部分。
构造派生类包括以下工作:
- 从基类接收成员
派生类把基类全部的成员(不包括构造函数和析构函数)接收过来 - 调整从基类接收的成员
接收基类成员无法选择,但可以对成员作某些调整。
通过指定继承方式,改变基类成员在派生类中的访问属性。 例如:通过继承把基类的公用成员指定为在派生类中的访问属性为私有(派生类外不能访问)。
用新成员取代基类成员。例如:可以在派生类中声明一个与基类同名的成员,则派生类中的新成员会覆盖基类的同名成员。如果是成员函数,函数名和函数的参数表(参数个数和类型)也应该相同。如果不相同就是函数重载而不是覆盖了。 - 在声明派生类时增加的成员
派生类是抽象基类的具体实现。声明派生类时还应自己定义派生类的构造函数和析构函数。