C 修飾符詳解

2021-09-24 19:40:53 字數 2446 閱讀 7766

不定期更新,2017.8.9

別看new這個修飾符經常用,恐怕很多人都不知道其本質。我們先來看看new修飾符的官方定義:

new 僅允許在巢狀類宣告中使用,表明類中隱藏了由基類中繼承而來的與類中同名的成員。

看懂了嗎?不懂沒關係,咱們接著往下看

首先,我定義乙個類:

1

namespace

修飾符概念211

set 12}

1314

private

intintpassword;

1516

public

intintpassword

1719

set 20}

2122

//上面是倆字段和屬性,下面來構造,啊哈哈哈

23public

new修飾符( )

2428

}29 }

這個類裡面有兩個字段屬性,乙個構造,構造在new的時候會呼叫預設的那乙個,其中構造的作用就是在new的時候初始化類資料。

控制台**及結果:

1

namespace

修飾符概念212

我的new修飾符這個類寫完之後呢他是儲存在硬碟中的,和記憶體沒有半毛錢關係(除非這個類裡面含有static關鍵字)。然後在控制台裡面你new了乙個該類型別的物件vae出來的時候,系統就會在記憶體中給這個物件vae分配乙個該類大小的儲存空間出來。就是這樣。

來看看官方的定義

public  表示不限制對該類的訪問

public應該就不用講了吧,這個用的最多,只要乙個成員定義成public之後呢,該類內部可以隨意的訪問他,其他類也可以隨意的訪問他,該類被繼承之後其子類也可以隨意的訪問他。通俗的說就是「我的就是大家的,隨意拿去用,別客氣」

來看看官方的定義

protected  表示只能從所在類和所在類派生的子類進行訪問

看著官方的定義就應該明白了,我還是貼上**吧:

首先我新建乙個類:  

1

namespace

修飾符概念210

set 11}

1213

protected

void

start()

1417

}18 }

在控制台裡面呼叫這個類裡面的方法試試行不行:

namespace

修飾符概念}}

結果是無法呼叫的。

接下來看看子類能不能呼叫:

1

namespace

修飾符概念210

}11 }

完全ok啊。

那麼接下來我要做乙個猜想了,其子類的例項化物件能不能呼叫這個保護的方法呢?

namespace

修飾符概念}}

是可以的。好了,現在能完全了解protected的官方定義了吧。

對於乙個全域性變數。全域性範圍內都可以訪問到他。這是不用通過什麼關係來找的,因為全域性變數就擺在那裡,大家都看得到,你愛訪問就訪問。

對於乙個靜態的成員。它的訪問原理跟全域性變數是一樣的。但是它隱身了,一般類人看不到它,但是它又設定了隱身對自己的類可見,那麼那個類就可以看到它。

乙個全域性變數不屬於某個類,或某個函式。

乙個靜態成員物件它屬於某個類,但是它只有乙個,這個類可以使用它,但是它是也公有財產,不屬於某個物件。當你為乙個物件分配空間時,不用再另外給它乙個空間來放靜態成員物件。所以你在sizeof()時,靜態物件的大小沒有影響。

internal的意思就是只能在程式集中訪問。

例如下面,命名空間test下的兩個類

namespace

test

}public

class

write}}

現在我外部想呼叫這個類裡面的方法:

//

可以這麼訪問

test.write x = new

test.write();

x.writeout();

//但不可以這麼訪問

test.a x = new

test.a();

x.b();

這就是internal的功能,只能在程式集中訪問。

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 預...