概念
接口描述的是可屬于任何類或結構的一組相關行為,所以實現接口的類或結構必須實現接口定義中指定的接口成員。
定義:使用interface 關鍵字,由方法、屬性、事件、索引器或這四種成員類型的任意組合構成。另可使用new、public、protected、intenal和private等修飾符實現接口,但接口成員必須是公共的。
正常人剛接觸接口常認為接口多此一舉,畢竟直接調用方法就可以了,為什么要用接口呢。那其存在的意義是什么?
總結了一下,接口的目的在于方便類的統一管理和調用,增強約束力。
下面舉個簡單例子。
示例
interface IProgram{void Fun();}class Program:IProgram{void IProgram.Fun(){Console.WriteLine("哈哈");}static void Main(string[] args){IProgram p =new Program(); //聲明接口實例p.Fun();}}
先看上面的代碼,聲明一個接口,然后實例化調用方法,似乎我不要接口也可以實現,而且更簡單。
class Program
{void Fun(){Console.WriteLine("哈哈.");}static void Main(string[] args){Program p = new Program();p.Fun(); }
}
那接口在這種情況下并沒有什么用。看下面的代碼:
class Laugh
//顯式實現接口成員
{public void Fun(){Console.WriteLine("哈哈.");}
}
class Cry
//顯式實現接口成員
{public void Fun(){Console.WriteLine("呵呵.");}
}
class Program
{static void Main(string[] args){Laugh p = new Laugh(); p.Fun();Cry c = new Cry();c.Fun();}
}
interface IProgram
{void Fun();
}
class Laugh: IProgram
//顯式實現接口成員
{public void Fun(){Console.WriteLine("哈哈.");}
}
class Cry: IProgram
//顯式實現接口成員
{public void Fun(){Console.WriteLine("呵呵.");}
}
class Program
{static void Main(string[] args){IProgram p = new Laugh(); p.Fun();IProgram c = new Cry();c.Fun();}
}
由上面的對比可以看出,接口適用于多個類都有共同的方法,使用接口可以對這些方法同統一調用管理。
接口繼承和類繼承的區別
- 類繼承不僅是說明繼承,也是實現繼承;接口繼承只是說明繼承。派生類可以繼承基類的方法實現,而派生的接口只繼承了父接口的成員方法說明,而沒有繼承父接口的實現。
- C#中類繼承只允許單繼承,但是接口繼承允許多繼承,一個子接口可以有多個父接口。
參考文章如下:
C# 接口《通俗解釋》
C#之接口