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

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

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

        上例中,方法IBase.FWay在派生的接口ILeft中被Ileft的成員方法FWay覆蓋了。所以對d. FWay (1)的調(diào)用實際上調(diào)用了。雖然從IBase-> IRight-> IDerived這條繼承路徑上來看,ILeft.FWay方法是沒有被覆蓋的。我們只要記住這一點:一旦成員被覆蓋以后,所有對其的訪問都被覆蓋以后的成員"攔截"了。

        類對接口的實現(xiàn)

        前面我們已經(jīng)說過,接口定義不包括方法的實現(xiàn)部分。接口可以通過類或結(jié)構(gòu)來實現(xiàn)。我們主要講述通過類來實現(xiàn)接口。用類來實現(xiàn)接口時,接口的名稱必須包含在類定義中的基類列表中。

        下面的例子給出了由類來實現(xiàn)接口的例子。其中ISequence 為一個隊列接口,提供了向隊列尾部添加對象的成員方法Add( ),IRing 為一個循環(huán)表接口,提供了向環(huán)中插入對象的方法Insert(object obj),方法返回插入的位置。類RingSquence 實現(xiàn)了接口ISequence 和接口IRing。

      using System ;
      interface ISequence {
       object Add( ) ;
      }
      interface ISequence {
       object Add( ) ;
      }
      interface IRing {
       int Insert(object obj) ;
      }
      class RingSequence: ISequence, IRing
      {
       public object Add( ) {…}
       public int Insert(object obj) {…}
      }

        如果類實現(xiàn)了某個接口,類也隱式地繼承了該接口的所有父接口,不管這些父接口有沒有在類定義的基類表中列出。看下面的例子:

      using System ;
      interface IControl {
       void Paint( );
      }
      interface ITextBox: IControl {
       void SetText(string text);
      }
      interface IListBox: IControl {
       void SetItems(string[] items);
      }
      interface IComboBox: ITextBox, IListBox { }

        這里, 接口IcomboBox繼承了ItextBox和IlistBox。類TextBox不僅實現(xiàn)了接口ITextBox,還實現(xiàn)了接口ITextBox 的父接口IControl。

        前面我們已經(jīng)看到,一個類可以實現(xiàn)多個接口。再看下面的例子:

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

        類EditBox從類Control中派生并且實現(xiàn)了Icontrol和IdataBound。在前面的例子中接口Icontrol中的Paint方法和IdataBound接口中的Bind方法都用類EditBox中的公共成員實現(xiàn)。C#提供一種實現(xiàn)這些方法的可選擇的途徑,這樣可以使執(zhí)行這些的類避免把這些成員設(shè)定為公共的。接口成員可以用有效的名稱來實現(xiàn)。例如,類EditBox可以改作方法Icontrol.Paint和IdataBound.Bind來來實現(xiàn)。

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

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

      來源:模板無憂//所屬分類:.Net教程/更新時間:2008-08-22
      相關(guān).Net教程