c++繼承


一、類之間的關系

  has-A   包含關系,用以描述一個類由多個“部件類”構成。實現has-A關系用類成員表示,即一個類中的數據成員是另一種已經定義的類。

  uses-A  一個類部分地使用另一個類。通過類之間成員函數的相互聯系,定義友員或對象參數傳遞實現。

  is-A   機制稱為“繼承”。關系具有傳遞性,不具有對稱性。

二、繼承的重要說明

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

  2、子類可以擁有父類沒有的方法和屬性

  3、子類就是一種特殊的父類

  4、子類對象可以當作父類對象使用

 

三、類與繼承的訪問控制

  1.類中成員的訪問控制

    public:在類的內部、外部都能使用

    protected:在類的內部使用,在繼承的子類中使用

    private:只能在類的內部,不能在類的外部(包括繼承中的子類也不能使用)

  2. C++中的繼承方式會影響子類的對外訪問屬性

    public繼承:父類成員在子類中保持原有訪問級別

    private繼承:父類成員在子類中變為private成員

    protected繼承:父類中public成員會變成protected

                            父類中protected成員仍然為protected

                            父類中private成員仍然為private

  3. ‘三看’原則

    1)看調用語句,這句話寫在子類的內部、外部

            2)看子類如何從父類繼承(public、private、protected)     

            3)看父類中的訪問級別(public、private、protected)

 

四、繼承中的兼容性原則

  類型兼容規則是指在需要基類對象的任何地方,都可以使用公有派生類的對象來替代。

void howtoPrint(parent *base) {
     base->printP();父類的成員函數   
}

void howtoPrint2(parent &base) {
     base.printP();父類的成員函數   
}
{  
    //第一種含義:

  parent p1;

  child c1;

  parent *p = NULL;

  //1-1 基類指針(引用)指向子類對象

  p = &c1;
  p->printP();
      //1-2 指針做函數參數  
      howtoPrint(&p1);
      howtoPrint(&c1);
      //引用做函數參數
       howtoPrint2(p1);
      howtoPrint2(c1); 
      //第二種含義:
      //可以用 子類對象初始化父類對象
      parent p3 = c1;         
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM