1. 程式人生 > >C#09( 介面,抽象類和抽象方法)

C#09( 介面,抽象類和抽象方法)

介面,抽象類和抽象方法

一、介面 介面定義了所有類繼承介面時應遵循的語法合同。 介面定義了語法合同 “是什麼” 部分,派生類定義了語法合同 “怎麼 做” 部分。 介面定義了屬性、方法和事件,這些都是介面的成員。 介面只包含了成員的宣告。 成員的定義是派生類的責任。 介面提供了派生類應遵循的標準結構。 介面使得實現介面的類或結構在形式上保持一致。 抽象類在某種程度上與介面類似,但是,它們大多隻是用在當只有 少數方法由基類宣告由派生類實現時。

1.定義介面: 介面使用 interface 關鍵字宣告,它與類的宣告類似。 介面宣告預設 是 public 的。 通常介面命名已I字母開頭。 interface 介面名 { //介面程式碼 }

2.介面繼承介面(多個介面用,號進行區分): interface 介面名:繼承的介面名 { //介面的程式碼 }

3.類實現介面: 訪問修飾符 class 類名:介面名 { //實現介面的方法 }

4.一個類如何又繼承類又實現介面: 訪問修飾符 class 類名:父類名稱,介面名稱 { //實現介面的方法 } 二、抽象類 抽象類主要用來提供多個派生類可共享的基類的公共定義, 它與非抽象類的主要區別如下: 1.抽象類不能直接例項化 2.抽象類可以包含抽象成員,但非抽象類不可以。 3.抽象類不能被密封。 C#中宣告抽象類時需要使用abstract關鍵字。

1.定義一個抽象類: 訪問修飾符 abstract class 類名:基類或介面 { //繼承的關係可以寫,也可以不寫 //類成員 }

三、抽象方法 抽象方法就是在宣告方法時,加上abstract關鍵字,宣告抽象方法時 需要注意以下兩點:

  1. 抽象方法必須宣告在抽象類中。

  2. 宣告抽象方法時,不能使用virtual,static和private修飾符。

抽象方法宣告引入了一個新方法,但是不提供該方法的實現,由於 抽象方法不提供任何實際實現,因此抽象方法的方法體只包含一個分號。

1.抽象方法的宣告: public abstract 返回資料型別/void 方法名();

四、抽象方法和介面的區別 1.它們的派生類只能繼承一個基類,即只能直接繼承一個抽象類,但可以繼承任意多個介面。 2.抽象類中可以定義成員的實現,但介面中不可以。 3.抽象類中可以包含欄位,建構函式,解構函式,靜態成員或常量等,介面不可以。 4.抽象類中的成員是私有的(只要它們不是抽象的),受保護的,內部的或受保護的內部成員(受保護的內部成員只能在應用程式的程式碼或派生類中訪問),但介面中的成員必須是公共的。

抽象類和介面這兩種型別用於完全不同的目的。抽象類主要用於作物件系列的基類,共享某些主要特性,例如共同的目的和結構。介面則主要用於類,這些類在基礎水平上有所不同,但仍可以完成某些相同的任務。