父類,子類與繼承的關係
先有父類,再有子類,先析構子類,再析構父類
第一,子類物件在建立時會首先呼叫父類的建構函式
第二, 父類建構函式執行結束後,執行子類的建構函式
第三, 當父類的建構函式有引數時,需要在子類的初始化列表中顯示呼叫
第四, 解構函式呼叫的先後順序與建構函式相反
繼承的概念:面向物件中的繼承指類之間的父子關係, 子類擁有父類的某些狀態和行為,(子類複用了父類的功能或狀態)。
繼承有三種:public,protect,private
1:如果父類中的成員使用public修飾,子類無條件繼承。需要被外界訪問的成員直接設定為public
2:如果父類中的成員使用protected修飾,子類也繼承,即使父類和子類不在同一個包中。 protected成員可以在本類和子類中被訪問,但不能在外界被訪問,
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. 如果在子類中不用作用域分別符號::