① 继承是面向对象的三大特性之一。
② 定义类时,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候,就可以考虑利用继承技术,减少重复代码。

- #include <iostream>
- using namespace std;
- #include<string>
-
- //打印输出类
- class Java
- {
- public:
- void header()
- {
- cout << "首页、公开课、登陆、注册...(公共头部)" << endl;
- }
- void footer()
- {
- cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;
- }
- void left()
- {
- cout << "Java、Python、C++....(公共分类列表)" << endl;
- }
- void content()
- {
- cout << "Java学科视频" << endl;
- }
- };
-
- class Python
- {
- public:
- void header()
- {
- cout << "首页、公开课、登陆、注册...(公共头部)" << endl;
- }
- void footer()
- {
- cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;
- }
- void left()
- {
- cout << "Java、Python、C++....(公共分类列表)" << endl;
- }
- void content()
- {
- cout << "Python学科视频" << endl;
- }
- };
-
- class CPP
- {
- public:
- void header()
- {
- cout << "首页、公开课、登陆、注册...(公共头部)" << endl;
- }
- void footer()
- {
- cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;
- }
- void left()
- {
- cout << "Java、Python、C++....(公共分类列表)" << endl;
- }
- void content()
- {
- cout << "C++学科视频" << endl;
- }
- };
-
- void test01()
- {
- cout << "Java下载视频页面如下:" << endl;
- Java ja;
- ja.header();
- ja.footer();
- ja.left();
- ja.content();
-
- cout << "........................" << endl;
- cout << "Python下载视频页面如下:" << endl;
- Python py;
- py.header();
- py.footer();
- py.left();
- py.content();
-
- cout << "........................" << endl;
- cout << "C++下载视频页面如下:" << endl;
- CPP cpp;
- cpp.header();
- cpp.footer();
- cpp.left();
- cpp.content();
- }
-
- int main()
- {
- test01();
-
- system("pause");
-
- return 0;
-
- }
运行结果:
- #include <iostream>
- using namespace std;
- #include<string>
-
- //打印输出类
- class BasePage
- {
- public:
- void header()
- {
- cout << "首页、公开课、登陆、注册...(公共头部)" << endl;
- }
- void footer()
- {
- cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;
- }
- void left()
- {
- cout << "Java、Python、C++....(公共分类列表)" << endl;
- }
- };
-
- // 继承的好处:减少重复代码
- // 语法:class 子类:继承方式 父类
- // 子类 也称为 派生类
- // 父类 也称为 基类
-
- //Java页面
- class Java:public BasePage //继承了BasePage,把BasePage里面的内容全部拿到手了
- {
- public:
- void content()
- {
- cout << "Java学科视频" << endl;
- }
- };
-
- //Python页面
- class Python :public BasePage //继承了BasePage,把BasePage里面的内容全部拿到手了
- {
- public:
- void content()
- {
- cout << "Python学科视频" << endl;
- }
- };
-
- //C++页面
- class CPP :public BasePage //继承了BasePage,把BasePage里面的内容全部拿到手了
- {
- public:
- void content()
- {
- cout << "CPP学科视频" << endl;
- }
- };
-
- void test01()
- {
- cout << "Java下载视频页面如下:" << endl;
- Java ja;
- ja.header();
- ja.footer();
- ja.left();
- ja.content();
-
- cout << "........................" << endl;
- cout << "Python下载视频页面如下:" << endl;
- Python py;
- py.header();
- py.footer();
- py.left();
- py.content();
-
- cout << "........................" << endl;
- cout << "C++下载视频页面如下:" << endl;
- CPP cpp;
- cpp.header();
- cpp.footer();
- cpp.left();
- cpp.content();
- }
-
- int main()
- {
- test01();
-
- system("pause");
-
- return 0;
-
- }
运行结果:
① 继承的语法:class 子类:继承方式 父类
② 继承方式一共有三种:
1. 公共继承
2. 保护继承
3. 私有继承
③ 不同的继承方式,父类中的变量被继承后,权限相应的得到了改变,如下图所示。

- #include <iostream>
- using namespace std;
- #include<string>
-
- //打印输出类
- class Base1
- {
- public:
- int m_A;
- protected:
- int m_B;
- private:
- int m_C;
- };
-
- //公共继承
- class Son1:public Base1
- {
- public:
- void func()
- {
- m_A = 10; //父类中的公共权限成员 到子类中依然是公共权限
- m_B = 10; //父类中的保护权限成员 到子类中依然是保护权限
- //m_C = 10; //父类中的私有权限成员 子类访问不到
-
- }
- };
-
- void test01()
- {
- Son1 s1;
- s1.m_A = 100; //公共权限,类内能访问,类外也能访问
- //s1.m_B = 100; //保护权限,类内能访问,类外不能访问
- }
-
- //保护继承
- class Son2:protected Base1
- {
- public:
- void func()
- {
- m_A = 10; //父类中的公共权限成员 到子类中变为保护权限
- m_B = 10; //父类中的保护权限成员 到子类中依然是保护权限
- //m_C = 10; //父类中的私有权限成员 子类访问不到
-
- }
- };
-
-
- void test02()
- {
- Son2 s2;
- //s2.m_A = 100; //保护权限,类内能访问,类外不能访问
- //s2.m_B = 100; //保护权限,类内能访问,类外不能访问
- }
-
- //私有继承
- class Son3:private Base1
- {
- public:
- void func()
- {
- m_A = 10; //父类中的公共权限成员 到子类中变为私有权限
- m_B = 10; //父类中的保护权限成员 到子类中变为私有权限
- //m_C = 10; //父类中的私有权限成员 子类访问不到
-
- }
- };
-
- void test03()
- {
- Son3 s3;
- //s3.m_A = 100; //私有权限,类内能访问,类外不能访问
- //s3.m_B = 100; //私有权限,类内能访问,类外不能访问
- }
-
- int main()
- {
-
- system("pause");
-
- return 0;
-
- }
运行结果:
链接:https://www.zhihu.com/question/437657370/answer/1692846096