修飾關鍵字 | 訪問權限 |
---|---|
public | 可以被任意程式碼存取 |
private | 只能在同一個類別中被存取 |
protected | 只能在同一個類別中及其繼承的類別中存取 |
internal | 只能在同一個namespace 中存取 |
protected internal | 只能在同一個namespace 中可存取之外,還可被繼承的類別中存取 |
public :
沒有存取限制,被public修飾後可被任意存取
internal:
只能在同一個namespace 中存取,也就是就算加了入參考也無法使用
C#中預設為internal
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 讓人任意存取
這樣就違反了父類別限定的本意,就像我只能給我班上的人講議,但班上的同學卻在網路上說只要想拿即可來班上任意拿取。
所以這樣是會出現錯誤的,在撰寫時必須注意。
沒有留言:
張貼留言