1. 程式人生 > >Unity之介面總結

Unity之介面總結

介面:1.屬於任何類或結構的一組相關功能

2.定義:interface關鍵字定義,可由方法,屬性,事件,索引器這四種成員型別的任意組合組成

例子:interface EatBehairor{}

介面的特徵:


1、介面類似於抽象基類,不能直接例項化介面;介面中的方法都是抽象方法,實現介面的任何非抽象型別都必須實現介面的所有成員

2、介面不能包含常量、欄位、運算子、例項建構函式、解構函式或型別、不能包含靜態成員。

3、介面成員是自動公開的,且不能包含任何訪問修飾符

4、介面自身可從多個介面繼承,類和結構可繼承多個介面,但介面不能繼承類

例子:

interface IProgram
    {
        void Fun();
    }
    class Program:IProgram
    {
         //顯式實現介面成員

        void IProgram。Fun()
        {
            Console.WriteLine("I am Fun.");
        }
        staticvoid Main(string[] args)
        {
            IProgram p =new Program();  //宣告一個介面例項,但不是對介面進行例項化
            p.Fun();
            Console.Read();
        }
    }

5.一般情況,當類或者結構要實現的是單個介面,可以使用隱式實現

6.如果類或者結構繼承了多個介面且介面中具有相同名稱成員時,就要用到顯式實現,當顯式實現方式存在時,隱式實現方式就失效了。

class Program : IProgram, IAProgram
    {
        void IProgram.Fun()  //顯式實現介面IProgram

        {
            Console.WriteLine("I am IProgram Fun.");
        }

        void IAProgram.Fun()  //顯式實現介面IAProgram
        {
            Console.WriteLine("I am IAProgram Fun.");
        }

介面的繼承:


介面繼承和類繼承不同:

1.類繼承不僅是說明繼承,而且也是實現繼承;而介面繼承只是說明繼承。

2.類繼承只允許單繼承,但是介面繼承允許多繼承,一個子介面可以有多個父介面。

interface IProgram
    {
        void Fun();
    }
    interface IAProgram:IProgram
    {
    }
class Program :  IAProgram
    {
       void IProgram.Fun()
        {
            Console.WriteLine("I am IProgram Fun.");
        }

       staticvoid Main(string[] args)
        {
            Program pro =new Program();
            ((IAProgram)pro).Fun();
        }
    }
介面的覆蓋:



一個類如果實現了某個介面那麼它必須覆蓋該介面中的所有方法

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();
        }
    }

介面和抽象類的區別


1.介面用於規範,抽象類用於共性。

2.介面中只能宣告方法,屬性,事件,索引器。而抽象類中可以有方法的實現,也可以定義非靜態的類變數。

3.抽象類是類,所以只能被單繼承,但是介面卻可以一次實現多個。

4.抽象類可以提供某些方法的部分實現,介面不可以。

5.抽象類的例項是它的子類給出的。介面的例項是實現介面的類給出的。

6.在抽象類中加入一個方法,那麼它的子類就同時有了這個方法。而在介面中加入新的方法,那麼實現它的類就要重新編寫(這就是為什麼說介面是一個類的規範了)。

7.介面成員被定義為公共的,但抽象類的成員也可以是私有的、受保護的、內部的或受保護的內部成員(其中受保護的內部成員只能在應用程式的程式碼或派生類中訪問)。

8.此外介面不能包含欄位、建構函式、解構函式、靜態成員或常量。

MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0