1.继承和派生的概念
一个新类从已有的类中获得其属性和方法,这种现象称为类的 继承
。
从已有的类产生新的子类的现象,称为类的 派生
。
被继承的类称为 基类
,派生的类称为 派生类或子类
。
派生类是抽象基类的实例。
2.派生类的声明
公用继承
class student1:public student
私有继承
class student1:private student
保护继承
class student1:protected student
注意
:如果不写继承方式,则默认为私有(private)继承。
3.派生类的构成
派生类的构成包括:
(1)继承基类的所有成员
,包括数据成员和成员函数,获得共性。全部继承(除构造函数和析构函数),没有选择,所以可能会造成基类方法在派生类中用不到,而导致大量冗余。
(2)自增加的成员
,包括数据成员和成员函数。体现个性。
4.派生类成员的访问属性
(1)公用继承
继承方式指定为 public
。
在基类的访问属性 | 继承方式 | 在派生类的访问属性 |
---|---|---|
public | public | public |
private | public | 不可访问 |
protected | public | protected |
注意
:在公用派生类时,只能通过基类的公用成员函数来引用基类的私有数据成员
。
(2)私有继承
继承方式指定为 private
。
在基类的访问属性 | 继承方式 | 在派生类的访问属性 |
---|---|---|
public | private | private |
private | private | 不可访问 |
protected | private | protected |
注意
:既然声明为私有继承,就表示将原来能被外界引用的成员隐藏起来,不让外界引用。
。
(3)保护继承
继承方式指定为 protected
。
如果基类声明了私有成员,那么任何派生类都是不能访问它们的的;若希望派生类可以访问它们,应当把它们声明为保护成员。
在基类的访问属性 | 继承方式 | 在派生类的访问属性 |
---|---|---|
public | protected | protected |
private | protected | 不可访问 |
protected | protected | protected |
注意
:基类中的保护成员只有派生类可以访问,友元可以访问基类的私有成员
。
保护成员和私有成员的区别在于把保护成员的范围扩展到派生类中
。
(4)多级派生访问属性
多级派生遵循单次派生的规则,依次叠加。
在实际中,常用多级公用派生
。因为如果是私有派生或保护派生的话,多次派生之后,容易分不清楚哪些是私有、保护成员。
5.派生类的构造函数和析构函数
(1)派生类的构造函数
基类的构造函数是不能被继承的,故 在执行派生类的构造函数时,调用基类的构造函数
,这样基类和派生类同时被初始化。
<1>在派生类 类体内 定义派生类构造函数:
Student1(int n, string nam, char s, string con, string f_nam, int ag,