http://kudick.blog.163.com/blog/static/1666066320091055414453/ DoDo:
protected: 爺爺有一張銀行卡,爸爸能夠用,兒子也能夠用,隔壁老王不能夠用(由於老王跟爺爺沒有繼承關係)
internal: 王總有一張銀行卡,祕書能夠用,經理能夠用,王總兒子不能夠用(由於銀行卡屬於公家財務,只能由公司內部人員【同一個程序集】使用,王總兒子雖然繼承王總,可是他不是公司內部人員,因此也不能公款私用)
PS: 若是各個程序集使用了相同的強命名,那麼internal也能夠在不一樣的程序集下使用,就好比上面的internal例子,
王總有一張銀行卡(並且還有一本存摺【存摺至關於強命名】),同時王總的兒子也有一本存摺【同樣的強命名】,那麼王總的兒子也能夠使用了,隔壁老王也有一樣的存摺【強命名】因此他也能夠取錢!!
private<protected/internal<public 這個很明顯了。 關鍵是protected和internal的問題。
protected限定的是隻有在繼承的子類中才能夠訪問,能夠跨程序集
internal限定的是隻有在同一個程序集中才能夠訪問,能夠跨類 因此它們是有點交叉的。 當一個CLASS是ITERNAL的時候,要求其全部的成員的限定範圍不能大於internal。 因此,當一個INTERNAL的CLASS寫PROTECTED的時候,就須要兩個限定符了: internal protected 這樣,限定了訪問範圍是:本程序集、繼承的子類。 所以,關係是: private<internal protected<internal/protected<public internal和protected的具體範圍大小就不能準確的界頂了。