C++ 继承方式 //语法:class 子类 :继承方式 父类 //继承方式 三种: //1.公共继承 //2.保护继承 //3.私有继承

  1 //继承方式
  2 //语法:class 子类 :继承方式  父类
  3 //继承方式 三种:
  4 //1.公共继承
  5 //2.保护继承
  6 //3.私有继承
  7 
  8 #include <iostream>
  9 #include <string>
 10 using namespace std;
 11 
 12 //继承方式
 13 //1.公共继承
 14 class Base1
 15 {
 16 public:
 17     int m_A;
 18 protected:
 19     int m_B;
 20 private:
 21     int m_C;
 22 
 23 };
 24 //1.公共继承
 25 class Son1 :public Base1
 26 {
 27 public:
 28     void func()
 29     {
 30         m_A = 10;   //父类中的公共权限成员 到子类中依然是 公共权限
 31 
 32         m_B = 20;  //父类中的公共权限成员,到子类依然是   保护权限
 33                    //类内可以访问   类外不可以访问
 34 
 35         //m_C = 30;  //父类中的私有全程成员,到子类中 访问不到    
 36     }
 37 };
 38 
 39 void test01()
 40 {
 41     Son1 s1;
 42     s1.m_A = 100;
 43     //s1.m_B = 100;  //类内可以访问   类外不可以访问
 44     
 45 
 46 }
 47 //保护继承
 48 class Base2
 49 {
 50     public:
 51         int m_A;
 52     protected:
 53         int m_B;
 54     private:
 55         int m_C;
 56 
 57 
 58 };
 59 
 60 class Son2 : protected Base2
 61 {
 62 public:
 63     void func2()
 64     {
 65         m_A = 100;  //父类中公共成员到 子类中变为保护权限
 66         m_B = 100;  //没有发生变化  还是私有成员
 67 
 68         //m_C = 100; //父类中私有成员 子类访问不到
 69     }
 70 };
 71 
 72 void test02()
 73 {
 74     Son2 s2;
 75     //s2.m_A = 1000;  //在Son2中已经变为了 保护权限  所以类外 访问不到
 76     //s2.m_B = 200;    //在Son2中已经变为了 保护权限  所以类外 访问不到
 77     //s2.m_C = 551;    //私有成员不可以访问
 78 
 79 
 80 }
 81 //私有继承
 82 class Base3
 83 {
 84     public:
 85         int m_A;
 86     protected:
 87         int m_B;
 88     private:
 89         int m_C;
 90 
 91 };
 92 class Son3 :private Base3
 93 {
 94 public:
 95     void func3()
 96     {
 97         m_A = 100;      //父类中公共成员到子类中变为 私有成员
 98 
 99         m_B = 200;     //父类中保护成员到子类中变为  私有成员
100 
101         //m_C = 120;      //父类中的私有成员  子类不可以访问
102     }
103 
104 };
105 class GrandSon4 : public Son3
106 {
107 public:
108     void func4()
109     {
110         //m_A = 1000;  //到了 Son3中 m_A 变为私有,即使是 儿子也访问不到 
111         //m_B = 2000;  //到了 Son3中 m_A 变为私有,即使是 儿子也访问不到 
112     }
113 
114 };
115 void test03()
116 {
117     Son3 s3;
118 
119     //s3.m_A = 200;    //到Son3中 变为私有成员 访问不到
120     //s3.m_B = 100;    //到Son3中 变为私有成员 访问不到
121     //s3.m_C = 300;    //父类中的私有成员  子类不可以访问
122 
123 }
124 
125 int main()
126 {
127 
128 
129     system("pause");
130 
131     return 0;
132 
133 }

 

posted on 2021-08-08 09:07  Bytezero!  阅读(269)  评论(0编辑  收藏  举报