歡迎來到unity學習、unity培訓、unity企業培訓教育專區,這裏有很多U3D資源、U3D培訓視頻、U3D教程、我們致力於打造業內unity3d培訓、學習第一品牌。
今天簡單的學習了接口的初步使用,
1、接口
接口是可屬於任何類或結構的一組相關功能,所以實現接口的類或結構必須實現接口定義中指定的接口成員。
接口的關鍵字:interface
可以用:方法、屬性、事件、索引器或這四種成員類型的任意組合構成。
2、接口的特性
1)接口類似於抽象基類,不能直接實例化接口;接口中的方法都是抽象方法,實現接口的任何非抽象類型都必須實現接口的所有成員。
2)接口不能包含常量、字段、運算符、實例構造函數、析構函數或類型、不能包含靜態成員。
3)接口成員是自動公開的,且不能包含任何訪問修飾符。
4)接口自身可從多個接口繼承,類和結構可繼承多個接口,但接口不能繼承類。
例:
Interface IProgrem//使用interface定義一個IProgrem接口
{
void Fun();
}
class Program:IProgram//使用類繼承IProgream接口
{
//顯式實現接口成員
void IProgram.Fun()
{
Console.WriteLine("I am Fun.");
}
staticvoid Main(string[] args)
{
IProgram p =new Program(); //聲明一個接口實例,但不是對接口進行實例化
p.Fun();
Console.Read();
}
}
3、接口的顯式實現和隱式實現
1)一般當類或者結構要實現的是單個接口,使用隱式實現。
2)如果類或者結構繼承了多個接口且接口中具有相同名稱成員時,就要用到顯式實現,當顯式實現方式存在時,隱式實現方式就失效了。
4、接口的繼承
1)接口繼承和類繼承不同:首先,類繼承不僅是說明繼承,而且也是實現繼承;而接口繼承只是說明繼承。
2)派生類可以繼承基類的方法實現,而派生的接口只繼承了父接口的成員方法說明,而沒有繼承父接口的實現。
3)C#中類繼承只允許單繼承,但是接口繼承允許多繼承,一個子接口可以有多個父接口。
5、接口的覆蓋
由於接口的實現沒有方法體,抽象方法也沒有方法體,那麼當我們在接口的實現方法裏調用抽象方法時,會如何執行呢?
結果是:抽象類子類的實現方法功能.
interface IProgram
{
void Fun();
}
abstract class AProgram : IProgram
{
public abstract void AFun();
void IProgram.Fun()
{
AFun();
}
}
class Program:AProgram
{
public override void AFun()
{
Console.WriteLine("I am AProgram.");
}
staticvoid Main(string[] args)
{
IProgram pro =new Program();
pro.Fun();
}
}
6、接口和抽象類的區別
1、接口用於規範,抽象類用於共性。
2、接口中只能聲明方法,屬性,事件,索引器。而抽象類中可以有方法的實現,也可以定義非靜態的類變量。
3、抽象類是類,所以只能被單繼承,但是接口卻可以一次實現多個。
4、抽象類可以提供某些方法的部分實現,接口不可以。
5、抽象類的實例是它的子類給出的。接口的實例是實現接口的類給出的
6、在抽象類中加入一個方法,那麼它的子類就同時有了這個方法。而在接口中加入新的方法,那麼實現它的類就要重新編寫(這就是爲什麼說接口是一個類的規範了)。
7、接口成員被定義爲公共的,但抽象類的成員也可以是私有的、受保護的、內部的或受保護的內部成員(其中受保護的內部成員只能在應用程序 的代碼或派生類中訪問)。
8、此外接口不能包含字段、構造函數、析構函數、靜態成員或常量。
更多精彩請看:http://www.gopedu.com/