继承概念
继承的概念及定义
继承的概念
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。
例如,下面的代码中Student类和Teacher类就继承了Person类。
//父类(基类)
class Person
{
public:
void Print()
{
cout << "name:" << _name << endl;
cout << "age:" << _age << endl;
}
protected:
string _name = "张三"; //姓名
int _age = 18; //人的年龄
};
//子类
class Student : public Person
{
protected:
int _stuid; //学生的学号
};
//子类
class Teacher : public Person
{
protected:
int _jobid; //老师的工号
};
继承后,父类Person的成员函数和成员变量,都会变成子类的一部分,也就是说,子类Student和Teacher复用了父类Person的成员。
继承的定义
class 派生类名字 : 继承方式 基类名字
定义格式:
下面我们看到Person是父类,也称作基类。Student是子类,也称作派生类。
注意:在继承当中,父类也可以称为基类,子类是由基类派生而来的,所以子类又称为派生类。
继承关系和访问限定符
共有3种继承方式,访问限定符也有3种
所以可以组成9种不同的继承和访问限定方式
继承基类成员访问方式的变化
基类(父类)的成员被不同访问限定符修饰,会以不同的继承方式继承到派生类(子类)当中后,该成员最终在派生类(子类)当中的访问方式将会发生变化。
类成员/继承方式 | public继承 | protected继承 | private继承 |
---|---|---|---|
基类的public成员 | 派生类的public成员 | 派生类的protected成员 | 派生类的private成员 |
基类的protected成员 | 派生类的protected成员 | 派生类的protected成员 | 派生类的private成员 |
基类的private成员 | 在派生类中不可见 | 在派生类中不可见 | 在派生类中不可见 |
得出规律:认为三种访问限定符的权限大小为:public > protected > private ,取二者权限的较小值作为成员的权限
实际上面的表格我们进行一下总结会发现,基类的私有成员(private)在子类都是不可见。基类的其他成员在子类 的访问方式 == Min(成员在基类的访问限定符,继承方式) ,public > protected > private
所以我们只需要记住:
- 父类的私有成员在子类不可见
- 继承关系和父类访问限定符取Min,就是派生类的成员关系
注意:保护和私有的成员在父类中没有区别,但是在子类中,private成员是不可见的
,protected成员是可见的
- 点赞
- 收藏
- 关注作者
评论(0)