基于C#的接口基礎教程之四(3)_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:基于C#的接口基礎教程之三
        第三節 定義接口成員   接口可以包含一個和多個成員,這些成員可以是方法、屬性、索引指示器和事件,但不能是常量、域、操作符、構造函數或析構函數,而且不能包含任何靜態成員。接口定

        因為通過外部指派接口成員實現了每個成員,所以用這種方法實現的成員稱為外部接口成員。外部接口成員可以只是通過接口來調用。例如,Paint方法中EditBox的實現可以只是通過創建Icontrol接口來調用。

      class Test {
       static void Main( ) {
        EditBox editbox = new EditBox( );
        editbox.Paint( ); //錯誤: EditBox 沒有Paint 事件
        IControl control = editbox;
        control.Paint( ); // 調用 EditBox的Paint事件
       }
      }

        上例中,類EditBox 從Control 類繼承并同時實現了IControl and IDataBound 接口。EditBox 中的Paint 方法來自IControl 接口,Bind 方法來自IDataBound 接口,二者在EditBox 類中都作為公有成員實現。當然,在C# 中我們也可以選擇不作為公有成員實現接口。

        如果每個成員都明顯地指出了被實現的接口,通過這種途徑被實現的接口我們稱之為顯式接口成員(explicit interface member)。 用這種方式我們改寫上面的例子:

      public class EditBox: IControl, IDataBound {
       void IControl.Paint( ) {…}
       void IDataBound.Bind(Binder b) {…}
      }

        顯式接口成員只能通過接口調用。例如:

      class CTest {
       static void Main( ) {
        EditBox editbox = new EditBox( ) ;
        editbox.Paint( ) ; //錯誤:不同的方法
        IControl control = editbox;
        control.Paint( ) ; //調用 EditBox的Paint方法
       }
      }

        上述代碼中對editbox.Paint( )的調用是錯誤的,因為editbox 本身并沒有提供這一方法。control.Paint( )是正確的調用方式。

        注釋:接口本身不提供所定義的成員的實現,它僅僅說明這些成員,這些成員必須依靠實現接口的類或其它接口的支持。

        知道了怎樣訪問接口,我們還要知道怎樣實現接口,要實現C#的接口,請看下一節-實現接口

      分享:基于C#的接口基礎教程之二
        第二節 定義接口   從技術上講,接口是一組包含了函數型方法的數據結構。通過這組數據結構,客戶代碼可以調用組件對象的功能。   定義接口的一般形式為: [attributes] [m

      共3頁上一頁123下一頁
      來源:模板無憂//所屬分類:.Net教程/更新時間:2008-08-22
      相關.Net教程