c 類繼承的成員可見性

2021-08-21 12:00:41 字數 1143 閱讀 5146

1 – c++繼承機制的相關知識點

繼承機制,就是利用已有的資料型別來定義新的資料型別,新資料型別將擁有基類的成員。派生類可以從乙個基類派生,也可以從多個基類派生。從乙個基類派生的繼承稱為單繼承;從多個基類派生的繼承稱為多繼承。

單繼承語法:

class 《派生類名稱》:《繼承方式》《基類名》

;

多繼承語法:

class 《派生類名》:《繼承方式1>《基類名1>,《繼承方式2>《基類名2>,......

;

2 – 繼承方式可見性問題

所謂「可見性」指的是「基類成員對派生類的可見性」(也就是派生類成員函式是否訪問基類成員),以及「基類成員對派生類物件的可見性」(也就是派生類物件是否可通過」.」運算子訪問基類成員)。 

派生類通過繼承,將基類的成員作為自己的一部分,但不同的繼承方式導致基類的成員在派生類中具有不同的屬性。我們首先使用下圖表示,基類成員繼承後將會在派生類中表現的訪問屬性: 

上圖是單繼承的方式,也沒有涉及派生再次派生的情況。但這兩種情況都可以使用該圖的邏輯進行推導。就像再次派生的情況,只要將派生類當做基類看待就可以了。 

到這裡我們已經知道了基類中的成員在繼承類中的屬性,那麼再通過乙個角度詳述可見性問題。

繼承方式

public繼承

protected繼承

private繼承

基類成員屬性

public

protected

private

public

protected

private

public

protected

private

基類成員對其物件

可見不可見

不可見可見

不可見不可見

可見不可見

不可見基類成員對派生類

可見可見

不可見可見

可見不可見

可見可見

不可見基類成員對派生類物件

可見不可見

不可見不可見

不可見不可見

不可見不可見

不可見

from: 

類 成員可見性 繼承

類名定義 tips 現實世界事務的特徵和行為,抽象到類就是資料成員和方法。例項化物件時,會自動呼叫 init 函式。self 當前呼叫該方法的物件。python 在 init 函式內定義例項變數。嘗試訪問乙個例項變數時,python首先會在物件的例項變數列表查詢,如果找不到,則到類變數列表尋找,如果...

類成員的可見性

private 具有private屬性的成員稱為私有成員,只有本單元檔案中的程式可以訪問私有成員,而其他單元或者主程式均不能訪問這些成員。如果在乙個單元檔案中定義了2個類,則乙個類可以訪問另乙個類的私有成員。被定義的類成員僅在該類的方法中可被訪問,它的子類和例項都無法訪問。public 具有publ...

繼承的可見性

繼承的可見性 在c 中通過繼承,子類將擁有除父類的 建構函式和析構函式以外的所有的成員.注意這裡的 擁有 和 可見性 是兩個概念.擁有某個成員是指該成員確確實實地存在於該類中,但如果該成員的訪問許可權不允許該成員在繼承的子類中可見 比如private,internal 我們將不能在子類中對他們進行操...