【C++】继承 一、public 公有继承 - 示例分析
一、public 公有继承 - 示例分析
1、public 公有继承
public 公有继承 : 父类成员 在 子类 中 , 访问控制权限 不变 , 共有 和 保护成员 可以在子类访问 , 私有成员不可在子类中访问 ;
父类中的访问控制权限 如下变化 :
父类中的 public 成员 仍然是 public 成员 ;
父类中的 protected 成员 仍然是 protected 成员 ;
父类中的 private 成员 仍然是 private 成员 ;
2、代码示例 - public 公有继承
在下面的代码中 ,
基类 ( 父类 ) 中 , 定义了 公有变量 a , 保护变量 b , 私有变量 c ;
派生类 ( 子类 ) 中 , 分别访问了上述 3 个变量 ;
- 访问 公有变量 a : 公有继承 基类 公有变量 在子类中仍是 共有变量 , 该变量可被访问 , 父类 公有成员 可以在任意位置访问 , 这里的任意位置指的是 类内部 , 子类内部 , 类外部 ;
- 访问 保护变量 b : 公有继承 基类 保护变量 在子类中仍是 保护变量 , 该变量在子类中是 保护成员 , 可以在 基类内部 和 子类内部访问 ;
- 访问 私有变量 c : 公有继承 基类 私有变量 在子类中仍是 私有变量 , 该变量是 子类 中的 私有成员 , 只能在 基类中访问 ;
- 访问 公有变量 a : 基类中的公有成员 , 公有继承 子类中仍是 公有成员 , 可以在类外部访问 ;
- 访问 保护变量 b : 基类中的保护成员 , 公有继承 子类中仍是 保护成员 , 不可在类外部访问 ;
- 访问 私有变量 c : 基类中的私有成员 , 公有继承 子类中仍是 私有成员 , 不可在类外部访问 ;
- 代码示例 :
类外部访问 派生类 ( 子类 ) 继承的 3 个变量 ;
#include "iostream"using namespace std;
class Parent {public:int a;
protected:int b;
private:int c;};
// 子类 公有继承 父类class Child : public Parent {public:void changeVar() {// 可访问 : 父类 公有成员 可以在任意位置访问// 任意位置 : 类内部 , 子类内部 , 类外部a = 0;
// 可访问 : 父类 保护成员 可以在 类内部 和 子类内部访问 b = 0; // 报错 : “Parent::c”: 无法访问 private 成员(在“Parent”类中声明) // 私有成员只能在本类中访问 , 子类 和 类外部无法访问 //c = 0; }
};
int main() {
Child child; child.changeVar(); // 可访问 : 基类中的公有成员 // 公有继承 子类中仍是 公有成员 , 可以在类外部访问 child.a; // 不可访问 : 基类中的保护成员 // 公有继承 子类中仍是 保护成员 , 不可在类外部访问 //child.b; // 不可访问 : 基类中的私有成员 // 公有继承 子类中仍是 私有成员 , 不可在类外部访问 //child.c; // 控制台暂停 , 按任意键继续向后执行 system("pause"); return 0;
}