C#中的類1:定義(有點亂)

類的定義

class類名

{

類體

}


類的訪問級別

C++中的類沒有所謂訪問級別的問題,只需要導入定義類的頭文件,就可以使用這個類。而在C#Java中,並不是所有的類都可以被任意使用。

Java中,程序以包(package)的方式來組織,包的結構類似於文件夾。如果想使用另一個包裏定義的類,除了要先導入這個包之外,想使用的這個類還必須是公有類(以public關鍵字定義的類)。如果在定義類的時候沒有使用關鍵字public來修飾,則這個類只能在定義它的包裏被使用。


C#中,系統按照“解決方法”、“項目”和“源文件”的的組織。“解決方案”的級別最高,一個“解決方案”可以包含若干個“項目”。然後,從文件的層次來講,一個“項目”中可以包含若干個C#源文件,一個C#源文件中可以包含若干個命名空間、類、接口、枚舉等。從程序元素的層次來看,一個項目中可以包含命名空間、類、接口等。

Java類似,C#中的類按照訪問級別被分爲內部類(這裏講的“內部”是指訪問級別,不是指在類中定義的類)和公有類。內部類只能在本項目被使用,如果想讓某個類能被其他項目中的類訪問,則必須將其定義爲公有類。

公有類public關鍵字修飾;

內部類可以用關鍵字internal修飾,但一般不採用這種方式,因爲C#中規定,沒有加關鍵字public的類就是內部類。


普通類、抽象類和密封類

如果在定義類時使用了關鍵字abstract,那麼這個類就是抽象類。抽象類本身不能被實例化,

只能被繼承。

如果在定義類時使用了關鍵字sealed,那麼這個類就是所謂的“密封類”,和抽象類剛好相反,密封類不能被繼承(類似於Java中的final類)。

如果在定義類是沒有使用關鍵字abstractsealed,那麼這個類就是一個普通的類。

注意:關鍵字abstractsealed是互斥的。

以上的三種類都可以是public的或internal的。


繼承父類與實現接口的格式

class類名 : 父類,接口1,接口2,...

{}

Java類似,C#中只能直接繼承一個父類,但可以實現多個接口。在不同於Java中的繼承父類用關鍵字extends,實現接口用關鍵字implementsC#中採用了類似C++中的方式,即:使用冒號。

在書寫格式上,冒號後面的列表中必須是父類在前,接口在後。

不同於C++,在冒號後面的列表中不能使用訪問級別修飾符。

要注意的是,C#規定,子類的訪問級別不能高於基類。


如果基類是抽象類,那麼派生類必須要實現基類中的所有抽象方法,否則,派生類也必須是抽象類。

當然,子類也必須實現其實現的接口的所有方法。


接口的定義

使用關鍵字interface定義接口,而且規定接口名必須以大寫的英文字母I開頭。

接口也可以是internal的或public的。但不能對接口使用關鍵字abstractsealed

接口可以有父接口



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章