1. 程式人生 > >父類,子類與繼承的關係

父類,子類與繼承的關係

先有父類,再有子類,先析構子類,再析構父類

第一,子類物件在建立時會首先呼叫父類的建構函式

第二, 父類建構函式執行結束後,執行子類的建構函式

第三, 當父類的建構函式有引數時,需要在子類的初始化列表中顯示呼叫

第四, 解構函式呼叫的先後順序與建構函式相反 

繼承的概念:面向物件中的繼承指類之間的父子關係, 子類擁有父類的某些狀態和行為,(子類複用了父類的功能或狀態)。

繼承有三種:public,protect,private 

1:如果父類中的成員使用public修飾,子類無條件繼承。需要被外界訪問的成員直接設定為public
2:如果父類中的成員使用protected修飾,子類也繼承,即使父類和子類不在同一個包中。 protected成員可以在本類和子類中被訪問,但不能在外界被訪問,

訪問許可權介於public和private之間。
3:如果父類和子類在同一個包中,此時子類可以繼承父類中預設修飾符的成員。
4:如果父類中的成員使用private修飾,子類打死也都繼承不到。private只能在本類中訪問。
5:父類的構造器,子類也不能繼承,因為構造器必須和當前的類名相同。

3.c++中的訪問級別與繼承:

   a. 繼承時的訪問級別設定會影響到成員的訪問級別,c++中class的預設繼承為private繼承

   b. private繼承的子類擁有父類的所有成員,private繼承使得父類的所有成員在子類中變成private成員

如:class test1:private test{}

   c. public繼承,父類成員在子類中保持原有訪問許可權private繼承,父類成員在子類中變成為private成員。protected繼承,父類中訪問許可權比protected高的,保持原有許可權,其餘的訪問許可權變成protected。

    d. 最常用的繼承方式為,public繼承。類的成員常用protected屬性和public屬性。

子類與父類中的同名成員變數:

    a.當子類成員變數與父類成員變數同名時, 子類依然從父類繼承同名成員

    b. 在子類中通過作用域分別符號 :: 進行同名成員區分

    c. 同名成員儲存在記憶體中的不同位置

    d. 如果在子類中不用作用域分別符號::

區分同名成員變數,預設的成員變數是子類的成員變數