討論訪問屬性時,一般考慮以下幾種情況
1.基類成員函式訪問基類成員。(ok)
2.派生類的成員函式訪問派生類自己增加的成員。(ok)
3.基類的成員函式訪問派生類的成員(no)
4.派生類的成員函式訪問基類的成員
5.派生類外訪問派生類的成員(根據公有成員或者私有成員來定)
6.在派生類外訪問基類成員
不同的繼承方式決定了基類成員在派生類中的訪問屬性
(1)公用繼承
基類的公有成員和保護成員在派生類中保持原有的訪問屬性,其私有成員仍為基類私有(基類私有的意思是是基類的私有成員但不是子類的私有成員)。
(2)私有繼承
基類的公有成員和保護成員在派生類中成了私有成員。其私有成員仍為基類私有。
(3)受保護的繼承
基類的公有成員和保護成員在派生類中成了保護成員,其私有成員仍為基類私有。
定義:在定義乙個繼承類時將基類的繼承方式指定為public的,稱為公用繼承,用公用繼承方式建立的派生類稱為公用派生類,其基類稱為公用基類。
在基類的訪問屬性
在派生類中的訪問屬性
private(私有)
不可訪問
public(公用)
public(公用)
proctected(保護)
protected(保護)
雖然是公用繼承,但仍然不可以訪問基類的私有成員。這是體現了資料的封裝性。故保護私有成員是一條重要的原則。
訪問公用基類的成員:
對於公用基類的私有成員,只能通過呼叫基類的公有成員函式進行訪問基類的私有成員。
在宣告乙個派生類時將基類的繼承方式指定為private的,稱為私有繼承,用私有繼承方式建立的派生類稱為私有派生類,其基類稱為私有基類。
私有基類在派生類中訪問屬性
在基類的訪問屬性
在派生類中的訪問屬性
private
不可訪問
public
私有protected
私有對於不需要再往下繼承的類的功能可以用私有繼承方式把它隱藏起來,這樣下一層的派生類無法訪問它的任何成員。(公有函式變為私有函式,私有函式再往下繼承便不可訪問)
可以知道:乙個成員在不同的派生層次中的訪問屬性可能是不同的,它與繼承方式有關。
(注:可以利用私有派生類中的公有成員函式呼叫私有基類中的公有成員函式,從而訪問私有基類中的私有成員)。
注:私有派生類的限制過多,一般不經常使用。
保護成員:有'protected'宣告的成員稱為「受保護的成員」,或簡稱「保護成員」。從類的使用者角度考慮,保護成員等價於私有成員。但有一點與私有成員不同,保護成員可以被派生類的成員函式引用。如果在乙個類中宣告了保護成員,就意味著該類可能要用做基類,在它的派生類中會訪問這些成員。
在定義乙個派生類時將基類的繼承方式指定為protected的,稱為保護繼承,用保護繼承方式建立的派生類叫做保護派生類,其基類稱為受保護的基類,簡稱保護基類。
在基類中的訪問屬性
在派生類中的訪問屬性
private
不可訪問
public
protected
protected
protected
分析:(1)保護基類的所有成員在在派生類中都被保護起來,類外不能訪問,其公用成員和保護成員可以被其派生類的成員函式訪問,私有成員則不可以被訪問。
(2)比較一下私有繼承和保護繼承:
在直接繼承類中,兩種繼承方式的作用是相同的。但如果繼續派生,則兩種繼承方式的作用不相同。
(3)如果需要在派生類中引用基類某些成員,應當在基類中的這些成員宣告為protected,而不要宣告為private。
(4)在派生類中,成員有四種不同的訪問屬性
公用的,受保護的,私有的,不可訪問的
(5)類的成員在不同作用域中有不同的訪問屬性。
如何訪問保護成員:
通過派生類的成員函式進行訪問。
在多級派生的情況下,各成員的訪問屬性仍按以上原則確定。
如果多級派生都採用公有繼承方式,那麼直到最後一級派生類都能訪問基類的公用成員和保護成員。如果採用私有繼承,經過若干次派生後,基類的所有成員已經變成不可訪問的。如果採用保護繼承,很難分清哪些成員可以訪問,哪些成員不可以訪問。
因此,在實際中,常用的是公用繼承。
(二)c 類的繼承與派生
class derived class access control base class derived class 就是我們派生的新的類。base class 就是被繼承的類,我們成為基類或者父類。access control 就是訪問控制,分為public private protected。...
類繼承與派生
繼承 1.在已有類的基礎上新增功能。2.新增資料。在派生類中新增指定字元。3.修改類方法的行為。派生 classa class b public a 一 說明 a是乙個公有基類 公有派生 則a.a的公有成員 成為b 的公有成員 b.a的 私有部分成為b 的一部分,但只能通過 a的公有和保護方法訪問。...
類的繼承與派生
類的繼承與派生 一 派生類生成過程 1 吸收基類成員。2 改造基類成員。3 擴充基類成員。在類的派生中,建構函式和析構函式不能被派生。派生類繼承了基類的全部資料成員和除了構造,析構之外的全部函式 成員。二 類的繼承方式有共有繼承 保護繼承 私有繼承三種 1 公有繼承。基類的公有和保護成員的訪問屬性在...