當(dāng)前位置:首頁 > IT技術(shù) > Windows編程 > 正文

C#中修飾符用法“virtual(虛擬函數(shù))、override(重載函數(shù))、static(靜態(tài)函數(shù))、abstract(抽象函數(shù))、sealed(密封函數(shù))”
2021-08-10 12:02:09

1、virtual用于修飾方法、屬性、索引器或者事件聲明,并使它們可以在派生類中被重寫。virtual不能與static、abstract、private或者override修飾符一起使用。

聲明為virtual的方法被重寫時(shí),派生類中可以使用base關(guān)鍵字訪問父類中的publid,protected成員。語法:base.member

但base關(guān)鍵字不能跳過類層次結(jié)構(gòu)中的多個(gè)層次,子類不能訪問祖父類的成員。base.base.member是非法的

2、override要擴(kuò)展或者修改繼承的方法、屬性、索引器或事件的抽象實(shí)現(xiàn)或者虛擬實(shí)現(xiàn),必須使用override修飾符。

不能重寫非虛方法或靜態(tài)方法。 重寫的基方法必須是 virtual、abstractoverride 的。

3、static使用它聲明屬于類型本身而不是屬于特定的對(duì)象的靜態(tài)成員。static修飾符可以用于類、方法、屬性、運(yùn)算符、事件和構(gòu)造函數(shù),但不能用于索引器、析構(gòu)函數(shù)或類以外的類型。

下面的類聲明為 static,并且只包含 static 方法:

static class CompanyEmployee
{
public static void DoSomething() { /*...*/ }
public static void DoSomethingElse() { /*...*/ }
}

常數(shù)或者類型聲明隱式地是靜態(tài)成員。

不能通過實(shí)例引用靜態(tài)成員。 然而,可以通過類型名稱引用它。 例如,請(qǐng)考慮以下類:

public class MyBaseC
{
public struct MyStruct
{
public static int x = 100;
}
}

若要引用靜態(tài)成員 x,請(qǐng)使用完全限定名 MyBaseC.MyStruct.x,除非可從相同范圍訪問成員:

Console.WriteLine(MyBaseC.MyStruct.x);

盡管類的實(shí)例包含該類所有實(shí)例字段的單獨(dú)副本,但每個(gè)靜態(tài)字段只有一個(gè)副本。

不可以使用 this 來引用靜態(tài)方法或?qū)傩栽L問器。

如果對(duì)類應(yīng)用 static 關(guān)鍵字,則該類的所有成員都必須是靜態(tài)的。

類和靜態(tài)類可以有靜態(tài)構(gòu)造函數(shù)。 靜態(tài)構(gòu)造函數(shù)在程序開始和類實(shí)例化之間的某個(gè)時(shí)刻調(diào)用。

4、abstract 修飾符指示所修飾的內(nèi)容缺少實(shí)現(xiàn)或未完全實(shí)現(xiàn)。 abstract 修飾符可用于類、方法、屬性、索引器和事件。 在類聲明中使用 abstract 修飾符以指示某個(gè)類只能是其他類的基類。 標(biāo)記為抽象或包含在抽象類中的成員必須通過從抽象類派生的類來實(shí)現(xiàn)。



學(xué)習(xí)交流群:364976091

本文摘自 :https://blog.51cto.com/u

開通會(huì)員,享受整站包年服務(wù)立即開通 >