C# 中的訪問權限


修飾關鍵字訪問權限
public可以被任意程式碼存取
private只能在同一個類別中被存取
protected只能在同一個類別中及其繼承的類別中存取
internal只能在同一個namespace 中存取
protected internal只能在同一個namespace 中可存取之外,還可被繼承的類別中存取

public :


沒有存取限制,被public修飾後可被任意存取

internal:


只能在同一個namespace 中存取,也就是就算加了入參考也無法使用

C#中預設為internal 

protected:


只能被目前類別加上繼承的類別存取,在不同namespace 中,只要父類別中有被protected 的,即可被繼承

protected internal:


顧名思義,就是protected + internal。什麼意思呢? 就是保有internal 的特性( 在同一個namespace 中可以存取) 又有procted 的特性(在不同namspace 中,可被繼承的類別存取)

本來internal 是不可以在不同的namespace 中使用的,但是加上protected internal 之後即可在不同的namespace 中被繼承的類別存取。

private :


宣告為private 的只能在自己的類別中存取,此外,private 不可修飾類別類別只能被internal 、public 修飾



考慮到一個問題,如果父類別宣告為internal,而繼承的子類別為public ,這樣發生一個問題

子類別訪問權限> 父類別

父類別限定只能在同一個namspace 中繼承,但子類別卻宣告為public 讓人任意存取

這樣就違反了父類別限定的本意,就像我只能給我班上的人講議,但班上的同學卻在網路上說只要想拿即可來班上任意拿取。

所以這樣是會出現錯誤的,在撰寫時必須注意。





沒有留言:

張貼留言