全面剖析C 介面程式設計之覆蓋虛介面

2021-04-01 20:06:25 字數 1305 閱讀 1254

有時候我們需要表達一種抽象的東西,它是一些東西的概括,但我們又不能真正的看到它成為乙個實體在我們眼前出現,為此物件導向的程式語言便有了抽象類的概念。c#作為乙個物件導向的語言,必然也會引入抽象類這一概念。介面和抽象類使您可以建立元件互動的定義。通過介面,可以指定元件必須實現的方法,但不實際指定如何實現方法。抽象類使您可以建立行為的定義,同時提供用於繼承類的一些公共實現。對於在元件中實現多型行為,介面和抽象類都是很有用的工具。

乙個抽象類必須為類的基本類列表中列出的介面的所有成員提供實現程式。但是,乙個抽象類被允許把介面方法對映到抽象方法中。例如:

inte***ce imethods 

abstract class c: imethods

這裡, imethods 的實現函式把f和g對映到抽象方法中,它們必須在從c派生的非抽象類中被覆蓋。

注意顯式介面成員實現函式不能是抽象的,但是顯式介面成員實現函式當然可以呼叫抽象方法。例如:

inte***ce imethods

abstract class c: imethods

void imethods.g()

protected abstract void ff();

protected abstract void gg();

}

這裡,從c派生的非抽象類要覆蓋ff 和 gg, 因此提供了imethods的實際實現程式。

總結

元件化程式設計方法繼承並發展了物件導向的程式設計方法。它把物件技術應用於系統設計,對物件導向的程式設計的實現過程作了進一步的抽象。我們可以把元件化程式設計方法用作構造系統的體系結構層次的方法,並且可以使用物件導向的方法很方便地實現元件。

介面是元件之間的協議,描述了元件對外提供的服務。從技術上講介面是一組包含了函式型方法的資料結構。通過這組資料結構,客戶**可以呼叫元件物件的功能。介面可以從父介面中繼承。介面的繼承首先是說明性繼承,不是實現性繼承,它的實現需要通過類或結構來實現;其次介面繼承可以是多繼承。

介面包含的成員有方法、屬性、索引指示器和事件。由於介面允許多繼承,在可能發生二義性的地方可以採用全權名來避免。

可以用類來實現介面。在類中定位介面成員的實現稱之為介面對映。類必須為介面的所有成員提供具體的實現,包括介面中顯式定義的成員,以及介面從父介面中繼承而來的成員。同樣,在對介面的實現過程中可以採用顯式介面成員執行體來避免產生二義性。

派生類可以對基類已經實現的介面進行重實現。

抽象類也可以實現介面,但介面成員必須對映到抽象類的抽象成員。抽象類的派生類如果是非抽象類,則必須通過方法過載來實現介面成員。

全面剖析c 介面程式設計之定義介面

定義介面成員 介面可以包含乙個和多個成員,這些成員可以是方法 屬性 索引指示器和事件,但不能是常量 域 操作符 建構函式或析構函式,而且不能包含任何靜態成員。介面定義建立新的定義空間,並且介面定義直接包含的介面成員定義將新成員引入該定義空間。說明 介面的成員是從基介面繼承的成員和由介面本身定義的成員...

全面剖析C 介面程式設計之實現介面 (2)

重新實現介面 我們已經介紹過,派生類可以對基類中已經定義的成員方法進行過載。類似的概念引入到類對介面 的實現中來,叫做介面的重實現 re implementation 繼承了介面實現的類可以對介面進行重實現。這個介面要求是在類定義的基類列表中出 現過的。對介面的重實現也必須嚴格地遵守首次實現介面的規...

C 程式設計之介面

1.定義 介面是把公共方法和屬性組合起來,以封裝特定功能的乙個集合。一旦定義了介面,就可以在類中實現它。這樣類就可以支援介面所指定的所有屬性和成員 注意1 介面不能單獨存在。不能像例項化乙個類那樣例項化乙個介面。另外介面不能包含實現其成員的任何 只能定義成員本身。實現過程必須在實現介面的類中實現。注...