1. 程式人生 > >C#的Class的幾個修飾符

C#的Class的幾個修飾符

其中 spa 賦值 必須 override 引用 intern 訪問修飾符 ont

none or internal 類只能在當前的工程中訪問

Public 類可以在任何地方訪問

abstract or internal abstract 類可以在當前的工程中訪問,不能實例化,只能繼承

Public abstract 類可以在任何地方訪問,不能實例化,只能繼承

sealed or internal sealed 類只能在當前的工程中訪問,只能實例化,不能繼承

Public sealed 類可以在任何地方訪問,只能實例化,不能繼承

1、用於關鍵字class的修飾符

1)internal 默認修飾符,指定類為內部的,只有當前工程中的代碼才能訪問它

2)public 指定類為公共的,其它工程中的代碼也可以訪問它

3)abstract 指定類為抽象的,不能實例化,只能繼承,可以有抽象成員

4)sealed 密封的,不能繼承

其中,internal和public是一對互斥關系,abstract和sealed是一對互斥關系,兩對之間可以互相搭配使用。

默認類定義如下:

class A{}即相當於internal class A{},internal通常是省略的。

2、用於關鍵字interface的修飾符

1)public和private 這對訪問修飾符和關鍵字class的定義是一樣的,由於接口的公共特性通常使用public

2)abstract和sealed 這對修飾符不能在接口中使用,因為它們對接口毫無意義

當定義派生類時,如果同時有基類和接口,那麽先寫基類再寫接口,用逗號分開,只能繼承一個基類但可以有多個接口,如:

class DerivedClass:BaseClass,IInterface1,IInterface2

{}

接口定義和繼承如下:

public interface IMyInterface:IInterface1,IInterface2

{}

3 、用於類成員(包括字段、屬性、方法)的修飾符

1)public--成員可以由任何代碼訪問

2)private--成員只能由本類中的代碼訪問(默認值)

3)internal--成員只能由定義它的工程(裝配件)內部的代碼訪問

4)protected--成員只能由類或派生類中的代碼訪問

最後兩個關鍵字可以合並使用,即protected internal,只能由工程(裝配件)中類和派生類的代碼訪問。此外與以上關鍵字並行的還有static,表示類的靜態成員,而不是類的實例成員。字段還可以定義為realonly,只能在定義時或構造函數中賦值並賦值後不可更改。

4、類方法還有另外的關鍵字定義

1)virtual--方法可以重寫

2)abstract--方法必須重寫(只用於抽象類中,如果類方法定義了abstract則class也必須追加abstract)

3)override--方法重載了一個基類方法(如果方法被重載則必須使用該關鍵字)

4)extern--方法定義在其他地方

另:派生類的類方法還可以使用new來隱藏基類方法;通過this指向當前類實例引用,通過base關鍵字指向基類實例引用。

C#的Class的幾個修飾符