不定期更新,2017.8.9
別看new這個修飾符經常用,恐怕很多人都不知道其本質。我們先來看看new修飾符的官方定義:
new 僅允許在巢狀類宣告中使用,表明類中隱藏了由基類中繼承而來的與類中同名的成員。
看懂了嗎?不懂沒關係,咱們接著往下看
首先,我定義乙個類:
1這個類裡面有兩個字段屬性,乙個構造,構造在new的時候會呼叫預設的那乙個,其中構造的作用就是在new的時候初始化類資料。namespace
修飾符概念211
set 12}
1314
private
intintpassword;
1516
public
intintpassword
1719
set 20}
2122
//上面是倆字段和屬性,下面來構造,啊哈哈哈
23public
new修飾符( )
2428
}29 }
控制台**及結果:
1namespace
修飾符概念212
我的new修飾符這個類寫完之後呢他是儲存在硬碟中的,和記憶體沒有半毛錢關係(除非這個類裡面含有static關鍵字)。然後在控制台裡面你new了乙個該類型別的物件vae出來的時候,系統就會在記憶體中給這個物件vae分配乙個該類大小的儲存空間出來。就是這樣。
來看看官方的定義
public 表示不限制對該類的訪問
public應該就不用講了吧,這個用的最多,只要乙個成員定義成public之後呢,該類內部可以隨意的訪問他,其他類也可以隨意的訪問他,該類被繼承之後其子類也可以隨意的訪問他。通俗的說就是「我的就是大家的,隨意拿去用,別客氣」
來看看官方的定義
protected 表示只能從所在類和所在類派生的子類進行訪問
看著官方的定義就應該明白了,我還是貼上**吧:
首先我新建乙個類:
1在控制台裡面呼叫這個類裡面的方法試試行不行:namespace
修飾符概念210
set 11}
1213
protected
void
start()
1417
}18 }
namespace修飾符概念}}
結果是無法呼叫的。
接下來看看子類能不能呼叫:
1完全ok啊。namespace
修飾符概念210
}11 }
那麼接下來我要做乙個猜想了,其子類的例項化物件能不能呼叫這個保護的方法呢?
namespace修飾符概念}}
是可以的。好了,現在能完全了解protected的官方定義了吧。
對於乙個全域性變數。全域性範圍內都可以訪問到他。這是不用通過什麼關係來找的,因為全域性變數就擺在那裡,大家都看得到,你愛訪問就訪問。
對於乙個靜態的成員。它的訪問原理跟全域性變數是一樣的。但是它隱身了,一般類人看不到它,但是它又設定了隱身對自己的類可見,那麼那個類就可以看到它。
乙個全域性變數不屬於某個類,或某個函式。
乙個靜態成員物件它屬於某個類,但是它只有乙個,這個類可以使用它,但是它是也公有財產,不屬於某個物件。當你為乙個物件分配空間時,不用再另外給它乙個空間來放靜態成員物件。所以你在sizeof()時,靜態物件的大小沒有影響。
internal的意思就是只能在程式集中訪問。
例如下面,命名空間test下的兩個類
namespace現在我外部想呼叫這個類裡面的方法:test
}public
class
write}}
//這就是internal的功能,只能在程式集中訪問。可以這麼訪問
test.write x = new
test.write();
x.writeout();
//但不可以這麼訪問
test.a x = new
test.a();
x.b();
sealed是禁止繼承的修飾符,例如類a定義了sealed,那麼類a就不能被繼承,同樣,可以用在虛方法,虛屬性上面。總之,就是防止被繼承。
C 修飾符 類修飾符和成員修飾符
c 修飾符之類修飾符 public internal partial abstract sealed static internal 本程式集內的成員可以訪問。partial 部分類,可以將乙個類分成幾部分寫在不同檔案中,最終編譯時將合併成乙個檔案,且各個部分不能分散在不同程式集中。c 修飾符之成員...
學習C 修飾符 類修飾符和成員修飾符
c 修飾符之類修飾符 public internal partial abstract sealed static c 修飾符之成員修飾符 public protected private internal sealed abstract virtual override readonly cons...
修飾符 許可權修飾符
四種形式許可權修飾符的訪問情況 publicprotected不寫private 同乙個類中 四種都可以 同一包中的不同類 除了private剩下都可以 不同包下的子類 public protected 可以 不同包下的不同類 只有public可以 許可權修飾符 public protected 預...