當(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的方法被重寫時,派生類中可以使用base關(guān)鍵字訪問父類中的publid,protected成員。語法:base.member

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

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

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

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

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

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

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

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

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

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

Console.WriteLine(MyBaseC.MyStruct.x);

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

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

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

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

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



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

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

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