- C#程序設(shè)計(jì)自學(xué)經(jīng)典
- 楊光
- 816字
- 2021-03-19 17:22:27
5.3 接口
接口是為了實(shí)現(xiàn)多重繼承而產(chǎn)生的。由于C#中的類不支持多重繼承,但在客觀世界中出現(xiàn)多重繼承的情況又比較多,因此為了避免傳統(tǒng)的多重繼承給程序帶來的復(fù)雜性等問題,同時(shí)又保證了多重繼承帶給程序員的諸多好處,因此接口顯得尤為重要。本節(jié)將對(duì)接口進(jìn)行詳細(xì)的講解。
5.3.1 接口的介紹及聲明
在C#中使用interface聲明接口,其語法格式如下:
訪問修飾符 interface 接口名 { //接口成員 }
在聲明接口時(shí),除interface關(guān)鍵字和接口名外,其他的都是可選的。可以使用public、protected、private、new和internal等修飾符聲明接口,但接口成員必須是public的。
接口可包含方法、屬性、事件或索引器這4種成員類型,但不能包含字段,也不能設(shè)置這些成員的具體值,即只能定義,不能賦值。
所以,接口具有以下特性。
(1)不能直接實(shí)例化接口。
(2)接口可以包含方法、屬性、事件或索引器。
(3)接口不包含方法的實(shí)現(xiàn)。
(4)繼承接口的任何非抽象類型都必須實(shí)現(xiàn)接口的所有成員。
(5)類和結(jié)構(gòu)以及接口本身都可以從多個(gè)接口繼承。
接口成員的定義與類成員相似,但需要注意以下幾點(diǎn)區(qū)別。
(1)接口成員不能包含代碼體。
(2)接口成員不能用關(guān)鍵字static、abstract、virtual或sealed來定義。
(3)接口不能包含類型定義。
以下代碼片段聲明了一個(gè)public的名為IMyInterface的接口,并定義了一個(gè)名為ShowMsg的方法。
public interface IMyInterface { void ShowMsg(); }
5.3.2 實(shí)現(xiàn)接口
接口通過類的繼承來實(shí)現(xiàn),一個(gè)類雖然只能有一個(gè)基類,但可以繼承任意多個(gè)接口,實(shí)現(xiàn)接口的類必須包含該接口所有成員的實(shí)現(xiàn)代碼,同時(shí)必須匹配指定的簽名,并且必須是public的。
例5-8演示了接口的實(shí)現(xiàn)。
例5-8:接口的實(shí)現(xiàn)(ConsoleInterface)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleInterface { class Program { static void Main(string[] args) { IPerson iPerson = new Chinese(); iPerson.Say(); iPerson = new American(); iPerson.Say(); Console.ReadLine(); } } public interface IPerson { void Say(); } public class Chinese : IPerson { public void Say() { Console.WriteLine("你好!"); } } public class American : IPerson { public void Say() { Console.WriteLine("Hello!"); } } }
運(yùn)行結(jié)果如圖5-8所示。

圖5-8 接口的實(shí)現(xiàn)
在此例中,聲明了一個(gè)名為IPerson的接口,IPerson接口中有一個(gè)Say方法。接著定義了Chinese和American兩個(gè)類,并分別實(shí)現(xiàn)了IPerson接口,并實(shí)現(xiàn)了Say方法。在Main方法中,分別使用兩個(gè)類的對(duì)象實(shí)例化IPerson接口,并分別調(diào)用其Say方法輸出相應(yīng)信息。
- Web前端開發(fā)技術(shù):HTML、CSS、JavaScript(第3版)
- Unity 2020 Mobile Game Development
- Building a Quadcopter with Arduino
- Mastering Apache Maven 3
- JavaCAPS基礎(chǔ)、應(yīng)用與案例
- Android應(yīng)用案例開發(fā)大全(第二版)
- 匯編語言編程基礎(chǔ):基于LoongArch
- MySQL入門很輕松(微課超值版)
- Arduino機(jī)器人系統(tǒng)設(shè)計(jì)及開發(fā)
- Visual C++從入門到精通(第2版)
- Elasticsearch搜索引擎構(gòu)建入門與實(shí)戰(zhàn)
- Building Apple Watch Projects
- 現(xiàn)代JavaScript編程:經(jīng)典范例與實(shí)踐技巧
- Salt Cookbook
- LabVIEW案例實(shí)戰(zhàn)