1. 程式人生 > >驚艷的繼承_14

驚艷的繼承_14

之間 種類 成員訪問 public 關系 blog prot char ted

一。繼承的概念

  面向對象中的繼承指類之間的父子關系

   1.子類擁有父類的所有成員變量和成員函數

   2.子類就是一種特殊的父類

   3.子類可以當作父類對象使用

   4.子類可以擁有父類所沒有的方法和屬性 

二。繼承初體驗

  1.子類繼承父類直接默認繼承private

  2.類中的protected 

    a。protect成員可以在子類中被訪問,但不能在外界被訪問

    b。protected成員的訪問權限介於public和private之間

#include <cstdlib>
#include <iostream>

using namespace
std; class Parent { protected: int a; public: Parent() { a= 1000; } void Print() { cout <<"a = "<< a << endl; } }; class Child : public Parent { protected
: int b; public: void set(int a,int b) { this->a = a; this->b = b; } }; int main(int argc, char *argv[]) { Parent parent; Child child; child.set(1,2); parent.Print(); child.Print(); // child.a = 10000; cout << "
Press the enter key to continue ..."; cin.get(); return EXIT_SUCCESS; }

三。繼承與訪問級別

  類成員訪問級別設置的原則

  1. 需要被外界訪問的成員直接設置位public

  2.只能在當前類中訪問的成員設置為private

  3.只能在當前類和子類中訪問的成員設置為protected  

技術分享

  公式:繼承成員對外的訪問屬性

      = Max{ 繼承方式,父類成員訪問級別}。

  

#include <cstdlib>
#include <iostream>

using namespace std;

class A
{
private:
    int a;
protected:
    int b;
public:
    int c;
    
    A()
    {
        a = 0;
        b = 0;
        c = 0;
    }
    
    void set(int a, int b, int c)
    {
        this->a = a;
        this->b = b;
        this->c = c;
    }
};

class B : public A
{
public:
    void print()
    {
 //       cout<<"a = "<<a;
        cout<<"b = "<<b;
        cout<<"c = "<<endl;
    }
};

class C : protected A
{
public:
    void print()
    {
  //      cout<<"a = "<<a;
        cout<<"b = "<<b;
        cout<<"c = "<<endl;
    }
};

class D : private A
{
public:
    void print()
    {
 //       cout<<"a = "<<a;
        cout<<"b = "<<b;
        cout<<"c = "<<endl;
    }
};

int main(int argc, char *argv[])
{
    A aa;
    B bb;
    C cc;
    D dd;
    
    aa.c = 100;
    bb.c = 100;
 //   cc.c = 100;
//    dd.c = 100;
    
    aa.set(1, 2, 3);
    bb.set(10, 20, 30);
  //  cc.set(40, 50, 60);
 //   dd.set(70, 80, 90);
    
    bb.print();
    cc.print();
    dd.print();
    
    cout << "Press the enter key to continue ...";
    cin.get();
    return EXIT_SUCCESS;
}

五。小結

  1.繼承是一種類之間的關系,子類是一種特殊的父類

  2.子類通過繼承可以得到父類的所有成員

  3.private 成員可以被子類繼承但不能被子類訪問

  4.protected成員只能在當前類和子類中被訪問

  5.不同的繼承方式可以改變繼承成員的訪問屬性

驚艷的繼承_14