C++ 继承方式
文章目录
继承方式: 1.公共继承。2.保护继承。3.私有继承
用法:
class 子类 : 继承方式 父类{
内容
}
一、了解继承方式首先需要了解类的权限:
public:类内类外都能访问
protected/private:类内能访问,类外不能访问
二、继承时权限的变化
1.公共继承
public----public
protected----protected
private不可访问
2.保护继承
public变为protected
protected仍是protected
private不可访问
3.私有继承
public变为private
protected变为private
private不可访问
三、代码理解
1.首先定义父类,我们在父类中分别定义不同权限的变量
#include "iostream"
using namespace std;
class FATHER {
public:
int m_public;
protected:
int m_protected;
private:
int m_private;
};
2.再分别定义三个不同继承方法的儿子,可以看类内访问会出现只有private不能访问,符合预期
3.再在主函数中写三个儿子,看三个儿子访问父类中的变量的权限变化
至此基础继承变化已经完结,我们已经了解了父子间继承权限的关系
四、深入研究,加深理解
我们不妨再创建一个孙子,看下从父到子到孙子二级嵌套关系会怎么变化
在这里我们简单一点,就取个grandson继承son3
五、全部代码(由于故意写出错误帮助理解,编译通不过)
#include "iostream"
using namespace std;
class FATHER {
public:
int m_public;
protected:
int m_protected;
private:
int m_private;
};
class son1 : public FATHER {
public:
void fun() {
m_public = 10;
m_protected = 10;
m_private = 10;
}
};
class son2 : protected FATHER {
public:
void fun() {
m_public = 10;
m_protected = 10;
m_private = 10;
}
};
class son3 : private FATHER {
public:
void fun() {
m_public = 10;
m_protected = 10;
m_private = 10;
}
};
//特别地我们加上这句话,因为现在经过son3,m_public,m_protected都变成了private,
//所以在孙子这代就什么都访问不到了
class grandson : private son3{
public:
void func(){
m_public=10;
m_protected=10;
}
};
int main() {
son1 cla_son1;//public继承
son2 cla_son2;//protected继承
son3 cla_son3;//private继承
cla_son1.m_public = 10; //变成public
cla_son1.m_protected = 10; //变成protected
cla_son1.m_private = 10; //不可访问
cla_son2.m_public = 10; //变成protected
cla_son2.m_protected = 10; //变成protected
cla_son2.m_private = 10; //不可访问
cla_son3.m_public = 10; //变成private
cla_son3.m_protected = 10; //变成private
cla_son3.m_private = 10; //不可访问
}