介面是物件導向中乙個非常重要的概念,而且,物件導向中的繼承性和多型性主要都是通過介面來體現的。 1
.介面概述
介面是一種用來定義程式的協議,它描述可屬於任何類或結構的一組相關行為,可以把它看成是實現一組類的模板。介面可由方法、屬性、事件和索引器或這4種成員型別的任何組合構成,但不能包含字段。
類和結構可以像類繼承基類一樣從介面繼承,但是可以繼承多個介面。當類或結構繼承介面時,它繼承成員定義但不繼承實現。若要實現介面成員,類或結構中的對應成員必須是公共的、非靜態的,並且與介面成員具有相同的名稱和簽名。類或結構的屬性和索引器可以為介面中定義的屬性或索引器定義額外的訪問器。例如,介面可以宣告乙個帶有get訪問器的屬性,而實現該介面的類可以宣告同時帶有get和set訪問器的同一屬性。但是,如果屬性或索引器使用顯式實現,則訪問器必須匹配。
另外,介面也可以繼承其他介面,類可以通過其繼承的基類或介面多次繼承某個介面,在這種情況下,如果將該介面宣告為新類的一部分,則類只能實現該介面一次。如果沒有將繼承的介面宣告為新類的一部分,其實現將由宣告它的基類提供。基類可以使用虛擬成員實現介面成員;在這種情況下,繼承介面的類可通過重寫虛擬成員來更改介面行為。
綜上所述,介面具有以下特徵: q
介面類似於抽象基類:繼承介面的任何非抽象型別都必須實現介面的所有成員;
q不能直接例項化介面;
q介面可以包含事件、索引器、方法和屬性;
q介面不包含方法的實現;
q類和結構可從多個介面繼承;
q介面自身可從多個介面繼承。說明:
介面使得服務的協議與實現相分離,它是元件程式設計的基礎,在元件程式設計中,介面是元件向外公布其功能的唯一方法。
2.宣告介面 c#
中使用inte***ce關鍵字宣告介面,其語法格式如下:
修飾符inte***ce 介面名稱 :繼承的介面列表
說明:(
1)宣告介面時,通常以大寫字母「
i」開頭;(2
)宣告介面時,除
inte***ce
關鍵字和介面名稱外,其它的都是可選項;(3
)可以使用
new
、public
、protected
、internal
和private
等修飾符宣告介面,但介面成員必須是公共的。
例
宣告乙個介面,該介面中包含語言和版本兩個屬性,還包含乙個自定義方法showinfo,該方法用來顯示定義的語言和版本。**如下:
inte***ce iprogramdic//
自定義介面
///
///
版本(可讀可寫)
///
string version
///
///
顯示定義的語言和版本
///
void showinfo();}3
.介面的實現
介面的實現通過類繼承來實現,乙個類雖然只能繼承乙個基類,但可以繼承任意多個介面。宣告實現介面的類時,需要在基類列表中包含類所實現的介面的名稱。 c#
中實現繼承的語法格式如下:
class derivedclass: baseclass
說明:繼承類時,必須在子類和基類之間用冒號(
:),另外,如果繼承多個介面,那麼在繼承的每個介面之間用逗號分割(,)。
例
建立乙個控制台應用程式,該程式在上例的基礎上實現,program類繼承自介面iprogramdic,並實現了該介面中的所有屬性和方法,然後在main方法中例項化program類的乙個物件,並使用該物件例項化iprogramdic介面,最後通過例項化的介面物件訪問派生類中的屬性和方法。**如下:
class program : iprogramdic//
繼承自介面
set}///
/// 版本
///
public string version
set}
///
///
顯示定義的語言和版本
///
public void showinfo()
static void main(string args)
}
C 物件導向程式設計的繼承性(四)
程式中使用物件導向的繼承特性時,主要分為單繼承和多繼承兩種情況,下面分別進行介紹。1 單繼承 單繼承一般用於類之間的繼承,c 中的類只支援單繼承,實現單繼承時,使用 子類 基類 格式。下面通過乙個例項講解如何實現單繼承。例 建立乙個控制台應用程式,首先定義乙個language類,並在其中定義乙個st...
PHP 物件導向程式設計之繼承性
可以有多層繼承,即乙個類可以繼承某乙個類的子類,如類 b 繼承了類 a,類c 又繼承了類 b,那麼類 c 也間接繼承了類 a。class a class b extends a php是單繼承,乙個類只能有乙個父類 乙個類可以有多個子類 支援多層繼承 classa class bextends ac...
GO 物件導向 繼承性
首先我們需要定義父級的結構體和方法 然後在寫孩子的結構體和方法 從而就會有三種形式 在學到這一步貌似go的繼承比php的要簡單的多 go的繼承只需要把父級的結構體名直接放到裡邊就行 繼承後可以訪問父級的屬性和方法 也可以訪問自己的專有屬性 同時還擁有重寫父級方法 所有案例都配備有 直接扔進去就可以執...