三、接口的繼承
關於這點這裡就不作詳細的介紹,只需要記住有這樣一句話就萬歲了:“一個接口可從一個或多個基 接口繼承”。示意性代碼:
1interface IA { }
2interface IB:IA { }
3interface IC : IA, IB { }
4interface ID : IA, IB, IC { }
四、接口的特性
接口除了可以包含方法之外,還可以包含屬性、索引器、事件等,而且這些成員都被定義為公有的。 除此之外,不能包含任何其他的成員,例如:常量、域、構造函數、析構函數、靜態成員。一個類可以直 接繼承多個接口,但只能直接繼承一個類(包括抽象類)。
從類型上來說接口是引用類型的,類似於類,和抽象類的相似之處有三點:
1、不能實例化;
2、包含未實現的方法聲明;
3、派生類必須實現未實現的方法,抽象類是抽象方法,接口則是所有成員(不僅是方法包括其他成員 );
五、接口與回調
通常情況下,我們創建一個對象,並馬上直接去使用它的方法。然而,在有些情況下,希望能在某個 場景出現後或條件滿足時才調用此對象的方法。回調就可以解決這個“延遲調用對象方法”的問題。這個 被調用方法的對象稱為回調對象。
首先創建一個回調對象,然後再創建一個控制器對象,將回調對象需要被調用的方法告訴控制器對象.控 制器對象負責檢查某個場景是否出現或某個條件是否滿足.當此場景出現或此條件滿足時,自動調用回調對 象的方法.示意性代碼如下:
1using System;
2using System.Collections.Generic;
3using System.Text;
4
5namespace CallBack
6{
7 class Program
8 {
9 static void Main(string[] args)
10 {
11 //創建一個控制器對象,將提供給它的回調對象傳入
12 Resolve resolve = new Resolve(new PlayBasketball());
13 resolve.Play();
14
15 resolve = new Resolve(new PlayFootball());
16 resolve.Play();
17 }
18 }
19
20 /**//// <summary>
21 /// 定義一個接口--回調對象
22 /// </summary>
23 public interface IPlayer
24 {
25 void Play();
26 }
27
28 /**//// <summary>
29 /// 籃球
30 /// </summary>
31 public class PlayBasketball:IPlayer
32 {
33 public void Play()
34 {
35 Console.WriteLine("玩籃球");
36 }
37 }
38
39 /**//// <summary>
40 /// 足球
41 /// </summary>
42 public class PlayFootball : IPlayer
43 {
44 public void Play()
45 {
46 Console.WriteLine("玩足球");
47 }
48 }
49
50 /**//// <summary>
51 /// 控制角色--控制器對象
52 /// </summary>
53 public class Resolve
54 {
55 //持有一個接口的引用,通過構造方法初始化
56 private IPlayer player;
57 public Resolve(IPlayer player)
58 {
59 this.player = player;
60 }
61
62 public void Play()
63 {
64 player.Play();
65 }
66 }
67}
關於接口的相關知識點本文就介紹於此,更詳細的學習接口這門功夫請大家查閱相關資料。