1.继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。
继承的本质是复用,之前复用最多的地方是函数中复用,继承则体现在类。
具体这样理解:::首先我设置两个类
class Student
{
private:
string _name;
string _id;
int age;
string adders;
//学号
//专业
//宿舍
}
class teacher
{
private:
string _name;
string _id;
int age;
string adders;
//学院
//所教科目
}
仔细观察这两个类,我们可以发现,老师和学生中有共有的,也有自己的,如果向上面这样写,会造成代码冗余。为了解决这个问题,我们就要用到继承。
我们可以用一个类Person存放他们俩共有的,用这个类链接Teacher和Student,这样就保证了这Teacher和Student两个类可以用Person中的信息。
class Person
{
private:
string _name;
string _id;
int age;
string adders;
};
class Student:public Person
{
protected:
int _stuid; //学号
};
class Teacher:public Person
{
protected:
int _jobid; //工号
};
继承不仅会继承父类的成员,而且还会继承父类的成员函数。
class Person
{
public:
void Print()
{
cout<<"name:"<<_name<<endl;
cout<<"age:"<<_age<<endl;
}
protected:
string _name = "peter"; // 姓名
int _age = 18; // 年龄
};
class Student : public Person
{
protected:
int _stuid; // 学号
};
class Teacher : public Person
{
protected:
int _jobid; // 工号
};
int main()
{
Student s;
Teacher t;
s.Print();
t.Print();
return 0;
}
打印结果为:
name:peter
age:18
name:peter
age:18
2.继承的定义
这下面的基本上参照原博客:(39条消息) C++进阶之继承_cls-evd的博客-CSDN博客
- 基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私有成员还是被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面都不能去访问它。
- 基类private成员在派生类中是不能被访问,如果基类成员不想在类外直接被访问,但需要在派生类中能访问,就定义为protected。可以看出保护成员限定符是因继承才出现的。