第七章 介面

2021-08-08 13:41:44 字數 1575 閱讀 6393

為什麼使用介面?什麼情況下使用介面?來看看下面這個例子:

目前有許多檔案的壓縮格式,包括:.zip、.rar、.cab、.tar等等。假如每種壓縮格式都建立乙個類,那麼每個壓縮實現都會有不同的方法簽名,無法提供標準的呼叫規範。雖然方法可以在基類宣告,並在子類實現,但是這樣會用掉唯一的基類機會(c#只支援單繼承)。而且不同的壓縮沒有通用的**,這也使得基類變的沒有意義。

所以,在這種情況下,不是共享乙個基類,而是共享乙個介面。基類一般宣告子類需要的共享資源,而介面做某一類功能宣告。

注意:基類允許共享簽名,也允許共享實現,而介面只共享簽名,不共享實現。

1、定義介面

inte***ce ifilecompression

void compress(string targetfilename, string filename);

void uncompress(string compressedfilename, string expanddirectoryname);

2、介面的實現

2.1 顯式實現介面成員

2.1.1 顯式介面宣告

顯式介面方法的宣告,需要在實現介面方法時,使用介面方法的完全限定名,即「介面名.方法」。

inte***ce iput()

void putname();

class a : iput()

public voidiput.putname()

}2.1.2 顯式介面呼叫

呼叫顯式介面的方法只能通過介面本身呼叫,所以,必須將例項轉換為介面,或將實現介面的類的例項賦值給介面例項,然後再呼叫顯式介面方法。

a a = new a();

((iput)a).putname();

2.2

2、介面實現多型性

介面是實現多型的一種重要的手段。實現同一介面的不同類,可以將例項賦值給介面的例項,當使用介面例項呼叫介面宣告的方法時,則根據不同的類例項,呼叫不同的實現。

inte***ce iput()

void putname();

class a : iput()

public void putname()

system.console.writeline("a類");

class b : iput()

public void putname()

system.console.writeline("b類");

void main()

iput ip = new a();

ip.putname();

ip = new b();

ip.putname();

上例中,類a和類b都繼承並實現了介面iput。在main函式中,首先宣告了iput的例項,該例項指向了類a的例項,此時通過iput例項呼叫的putname()方法,是類a的putname()方法。再使iput例項指向類b的例項,此時再通過iput例項呼叫的putname()方法,是類b的putname()方法。從而實現了多型,即通過乙個簽名呼叫不同的實現。

python第七章 python教程(第七章)

字典和集合 字典是python中唯一,乙個對映型別 如何建立乙個字典,如下 dict dict 滲透 網路安全 怎麼理解字典呢?現實生活中的字典可以通過首字母進行查詢要查詢的漢子,python也可以這樣理解,通過 前的元素查詢到冒號後的元素。為什麼說字典是唯一乙個對映型別呢?看圖。對映型別區別與序列...

第七章 函式

1.ansi c 允許函式原型的使用,函式宣告提供給編譯器和之後的呼叫函式返回值型別,引數型別和數量的資訊,而k c用單獨的列表給出引數的型別,編譯器只記住函式的返回值型別,但不儲存函式的引數數量和型別 2.沒有return語句的函式,隱式的返回 3.函式的原型可以單獨放於乙個標頭檔案中,一定要具有...

第七章總結

7.2.2畫直線 畫直線使用cdc類的lineto 函式兩個過載版本 bool lineto int x,int y bool lineto point point 引數x y或point指定直線的終點位置,此函式從當前點到指定的終點之間畫一條直線,當前點包括在直線上,而終點不包括在直線上。如果畫線...