继承就是利用原来声明的类作为基础,再加上新的内容,以减少重复的工作量
- 一个派生类只从一个基类派生叫做单继承
- 一个派生类有两个或多个基类的叫做多重继承
- 继承和派生的关系可以表述为派生类是继承的具体化,而基类是派生类的抽象
声明派生类的一般形式为:
class 派生类名:[继承方式]基类名
{
派生类新加的成员
};
继承方式包括:public,private和protected
构成一个派生类应该包含以下3部分:
- 从基类接收成员,派生类把基类全部的成员(不包括构造函数和析构函数)接收过来
- 调整从基类接收的成员,可以改变基类成员在派生类中的访问属性等
- 在声明派生类时增加的成员,体现了派生类对基类功能的扩展
派生类的访问属性:
-
公用继承
基类的公有成员和保护成员在派生类中保持其原有访问属性,其私有成员仍为基类私有(不可访问) -
私有继承
基类的公有成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有 -
受保护的继承
基类的公有成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。保护成员的意思是,不能被外界引用,但可以被派生类的成员引用
注:保护成员可以被派生类的成员函数引用
多级派生
类A为基类,类B为类A的派生类,类C为类B的派生类,此时类B称为类A的直接派生类,类C称为类A的间接派生类
派生类构造函数:
一般形式,
派生类构造函数名(总参数表):基类构造函数名(参数表)
{
派生类中新增数据成员初始化语句
}
注意:这里不是定义基类构造函数,而是调用基类构造函数,因此这些参数是实参而不是形参,可以是常量,全局变量和派生类构造函数总参数表中的参数
有子对象的派生类构造函数:
Student s1;//Student是已经声明的类名,s1是Student类的对象
这时s1是类对象中的内嵌对象,称为子对象,即对象中的对象
一般形式:
派生类构造函数名(总参数表):基类构造函数名(参数表),子对象名(参数表)
{
派生类中新增数据成员初始化语句
}
多重继承派生类的构造函数: