1. 程式人生 > >派生類對基類成員的訪問許可權和派生類物件對基類成員的訪問許可權

派生類對基類成員的訪問許可權和派生類物件對基類成員的訪問許可權

派生類在類內只可能訪問基類的public和protected成員

派生類物件和基類物件只能訪問自個類的public成員

基類成員在繼承後在派生類中的許可權:

                 基類許可權:      public         private     protected

 繼承許可權:public 繼承       public         private     protected

               private繼承       private        private     private

               protected繼承    protected    private     protected     

繼承訪問許可權三看原則:

①看在類的內部還是外部訪問類成員

②看子類的繼承許可權(public  private  protected)

③看基類的許可權(public  private  protected)

以下是測試驗證:

 1 #include<iostream>
 2 using namespace std;
 3 class Parent {
 4 public:
 5     Parent():a(0),b(0),c(0){}
 6     virtual ~Parent() = default;
 7     int a;
 8 protected:
 9     int
b; 10 private: 11 int c; 12 }; 13 //public繼承 14 class Child1 :public Parent{ 15 public: 16 void test() 17 { 18 a = 0;//√基類共有的屬性派生類可以隨意訪問 19 b = 0;//√基類受保護的屬性可以在基類類內和子類類內中訪問 20 // c = 0;//× 基類私有屬性可以繼承但不能訪問 21 } 22 protected: 23 24 private: 25 }; 26 //private繼承 27 class Child2 :private
Parent { 28 public: 29 void test() 30 { 31 a = 0;//√基類共有的屬性派生類類內可以隨意訪問,就算是private繼承也可以 32 b = 0;//√基類受保護的屬性可以在基類類內和子類類內中訪問,就算是private繼承也可以 33 //c = 0;//× 基類私有屬性可以繼承但不能訪問 34 } 35 protected: 36 37 private: 38 }; 39 //protected繼承 40 class Child3 :protected Parent { 41 public: 42 void test() 43 { 44 a = 0;//√基類共有的屬性派生類類內可以隨意訪問 45 b = 0;//√基類受保護的屬性可以在基類類內和子類類內中訪問 46 //c = 0;//× 基類私有屬性可以繼承但不能訪問 47 } 48 protected: 49 50 private: 51 }; 52 int main() 53 { 54 Child1 c1; 55 c1.a = 10;//56 //c1.b = 20;//× 受保護的屬性不能在類外訪問 57 //c1.c = 30;//× 基類私有屬性不可在類外訪問,哪怕你是我的子類 58 59 Child2 c2; 60 //c2.a = 10;//× private繼承基類的共有屬性也不可以在類外訪問 61 //c2.b = 20;//× 受保護的屬性不能在類外訪問 62 //c2.c = 30;//× 基類私有屬性不可在類外訪問,哪怕你是我的子類 63 64 Child3 c3; 65 //c3.a = 10;//× protected繼承基類的共有屬性也不可以在類外訪問 66 //c3.b = 20;//× 受保護的屬性不能在類外訪問 67 //c3.c = 30;//× 基類私有屬性不可在類外訪問,哪怕你是我的子類 68 cout << "hello world!\n"; 69 return 0; 70 }
複製程式碼

派生類在類內只可能訪問基類的public和protected成員

派生類物件和基類物件只能訪問自個類的public成員

基類成員在繼承後在派生類中的許可權:

                 基類許可權:      public         private     protected

 繼承許可權:public 繼承       public         private     protected

               private繼承       private        private     private

               protected繼承    protected    private     protected     

繼承訪問許可權三看原則:

①看在類的內部還是外部訪問類成員

②看子類的繼承許可權(public  private  protected)

③看基類的許可權(public  private  protected)