1. 程式人生 > >C#接口

C#接口

修飾 base 示例 inter 隱式 重寫 test 實現 依賴

接口是指定一組函數成員而不實現它們的引用類型。所以只能類和結構來實現接口。對不同對象實現相同消息。

  示例:

  Interface Info{

    string GetName();

    string GetAge();}

  class CA:Info{

   public string name;

  public string age;

  public GetAge(){

    return age;}

  public GetName(){

    return name;}}

  public class CB:Info{

  public string name;

  public string age;

  public GetAge(){

    return age;}

  public class Program{

    static void printf(Info item){

    item.GetName();

    item.GetAge();}

  public static void main(){

    CA a=new CA();

    CB b=new CB();

    printf(a);

    printf(b);}

  }

IComparable接口示例:

數組排序Sort()依賴於一個Icomparable接口中的CompateTo函數,需要重寫,若為一個類的排序改寫則:

  public class Myclass:Icomparable{

  public int value;

  public int CompareTo(object obj){

  Myclass my=obj as Myclass;

    if(this.value<my.value)//this小於返回-1

      return -1;

    if(this.value>my.value)//this大於返回1

      return 1;

    return 0;//相等返回0}

1.聲明接口

接口聲明不能包含數據成員和靜態成員,只能聲明非靜態的方法、屬性、事件、索引器。

  interface IMyInterface

    {

    int test(int v);

    }

接口聲明允許有修飾符,但接口成員不允許有修飾符。隱式public。

  public interface I{

    int test(int v);

    private test(int v);//不允許}

2.實現接口

  只有類和結構才能實現接口。

3.接口是引用類型

  接口不僅僅是類或結構要實現的成員列表,它還是一個引用類型。

  class my:Info{…}

  my mc=new my();

  Info if=(Info)mc;//也可以用as

4.實現具有重復成員的接口

如果一個類實現了多個接口,出現重復情況則只需要用單個成員來包含所重復的接口。

5.派生成員作為實現

  interface Itfc{

    void print();}

    class mybase{

  public void print(){Console.WreteLine(“Fc”);}

    class derived:mybase,Itfc{}

    class Program{

    static void main(){

      derived d=new derived();

      d.printf();}}

雖然派生類沒有,則實現基類中與接口相同的函數。

6.顯式接口成員實現

當繼承多個接口的時候,對不同接口相同方法改寫

  interface i1{void print();}

  interface i2{void print();}

  class test:i1,i2{

  void i1.print();void i2.print();}

訪問顯式接口需要將本類轉換成接口類型。

C#接口