unity3d接口

歡迎來到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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章