天天看點

《.NET程式員面試秘笈》----面試題9 舉例描述接口的作用

本節書摘來自異步社群《.net程式員面試秘笈》一書中的第1章,面試題9,作者: 張雲翯, 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

.net程式員面試秘笈

【考點】接口類型的了解,接口在程式中的意義。

【出現頻率】

【解答】

接口在程式設計中的作用為充當類或結構的功能界面,接口的屬性、方法等屬于抽象描述必須通過類或結構的實作才能使用。接口是使用者隻知道接口有些什麼功能,卻不知道功能如何實作、由誰實作,這給程式的設計留下了很大的靈活性。例如某個項目由多個功能子產品組成,每個子產品由一個程式員完成,程式員隻需編寫完子產品功能的實作後,留下該子產品的接口供其他人使用。其他人在程式中隻需直接使用接口的功能,而不必了解接口的功能如何實作等問題,其關系模型如圖1.12所示。

《.NET程式員面試秘笈》----面試題9 舉例描述接口的作用

說明:

使用者指在程式中使用接口功能的代碼編寫者。

當功能子產品能力無法滿足需要或功能子產品的需求有變更時,程式員隻需将該功能子產品的實作代碼部分進行修改或擴充,其他調用接口的程式無須變動。接口的這種應用模式可稱為bridge模式,bridge模式即為分離意圖和實作,以得到更好的擴充性。本例以computer為接口,通過pca類和pcb類實作該接口的功能。在ch01目錄下建立一個程式檔案,并命名為interface.cs,編寫代碼如程式1.10所示。

《.NET程式員面試秘笈》----面試題9 舉例描述接口的作用
《.NET程式員面試秘笈》----面試題9 舉例描述接口的作用

在指令行下編譯interface.cs後,執行interface程式,其效果如圖1.13所示。

《.NET程式員面試秘笈》----面試題9 舉例描述接口的作用

本例程式運作時,建立pca類的執行個體,并将引用賦給接口類型a變量。第1行輸出時,接口類型的a直接調用getcpu方法,在第2行輸出中,a直接通路videocard屬性。其屬性和方法的操作實際為pca類的執行個體所執行。接下來将pcb類的執行個體引用賦給a,再次輸出的内容中,同樣為a調用getcpu方法并通路videocard屬性,其操作實際為pcb類的執行個體執行。由于接口的定義中videocard屬性是隻讀的,是以無法進行寫入操作,但是在pcb類中的videocard屬性可寫,是以建立pcb類型的執行個體操作videocard屬性時,可直接寫入使用者輸入值。

【分析】

接口是面向對象程式設計中一個非常重要的類型,和抽象類非常相似。接口類型無法被執行個體化,隻能被其派生類或結構實作,其編寫方法如以下代碼所示:

從以上代碼可得知,接口可以繼承多個接口,而類隻能繼承一個基類(單繼承)。接口可描述屬性、方法、索引器和事件,不過接口隻能作聲明,無法實作,所有聲明必須由繼承此接口的類或結構實作。必須要注意的是,接口的通路權限為public,類或結構實作接口的成員必須保持public,并且實作方法的簽名必須和接口方法簽名一緻。

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。

繼續閱讀