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

更多精彩关注http://unity.gopedu.com

你可能感兴趣的:(Unity之接口总结)