unity3d之接口

来源:互联网 发布:合肥办公软件培训学校 编辑:程序博客网 时间:2024/06/01 18:26

unity学习笔记,希望对朋友们有所帮助


接口


      1、接口描述的是可属于任何类或结构的一组相关功能,所以实现接口的类或结构必须实现接口定义中指定的接口成员。

      2、接口使用interface 关键字进行定义,可由方法、属性、事件、索引器或这四种成员类型的任意组合构成。

 

接口的特性

 

       1、接口类似于抽象基类,不能直接实例化接口;接口中的方法都是抽象方法,实现接口的任何非抽象类型都必须实现接口的所有成员。

       2、接口不能包含常量、字段、运算符、实例构造函数、析构函数或类型、不能包含静态成员。

       3、接口成员是自动公开的,且不能包含任何访问修饰符。

       4、接口自身可从多个接口继承,类和结构可继承多个接口,但接口不能继承类。


  1. interface IProgram
  2.     {
  3.         void Fun();
  4.     }
  5.     class Program:IProgram
  6.     {
  7.          //显式实现接口成员
  8.         void IProgram。Fun()
  9.         {
  10.             Console.WriteLine("I am Fun.");
  11.         }
  12.         staticvoid Main(string[] args)
  13.         {
  14.             IProgram p =new Program();  //声明一个接口实例,但不是对接口进行实例化
  15.             p.Fun();
  16.             Console.Read();
  17.         }
  18.     }

 

     5、一般情况,当类或者结构要实现的是单个接口,可以使用隐式实现。

     6、如果类或者结构继承了多个接口且接口中具有相同名称成员时,就要用到显式实现,当显式实现方式存在时,隐式实现方式就失效了。


  1. interface IProgram
  2.     {
  3.         void Fun();
  4.     }

  5.     interface IAProgram
  6.     {
  7.         void Fun();
  8.     }

  9. class Program : IProgram, IAProgram
  10.     {
  11.         void IProgram.Fun()  //显式实现接口IProgram
  12.         {
  13.             Console.WriteLine("I am IProgram Fun.");
  14.         }

  15.         void IAProgram.Fun()  //显式实现接口IAProgram
  16.         {
  17.             Console.WriteLine("I am IAProgram Fun.");
  18.         }
  19. //public void Fun()   //隐式实现接口
  20.         //{
  21.         //    Console.WriteLine("I am Program Fun.");
  22.         //}
  23.         staticvoid Main(string[] args)
  24.         {
  25.             //IProgram p = new Program();
  26.             //p.Fun();
  27.             //IAProgram ap = new Program();
  28.             //ap.Fun();

  29.             Program pro =new Program();
  30.             ((IProgram)pro).Fun();
  31.             ((IAProgram)pro).Fun();
  32.             Console.Read();
  33.         }
  34.     }


接口的继承

 

    接口继承和类继承不同:首先,类继承不仅是说明继承,而且也是实现继承;而接口继承只是说明继承。

        也就是说,派生类可以继承基类的方法实现,而派生的接口只继承了父接口的成员方法说明,而没有继承父接口的实现,

        其次,C#中类继承只允许单继承,但是接口继承允许多继承,一个子接口可以有多个父接口。


  1. interface IProgram
  2.     {
  3.         void Fun();
  4.     }

  5.     interface IAProgram:IProgram
  6.     {


  7.     }
  8. class Program :  IAProgram
  9.     {
  10.        void IProgram.Fun()
  11.         {
  12.             Console.WriteLine("I am IProgram Fun.");
  13.         }

  14.        staticvoid Main(string[] args)
  15.         {
  16.             Program pro =new Program();
  17.             ((IAProgram)pro).Fun();
  18.         }
  19.     }

接口的覆盖

 

       由于接口的实现没有方法体,抽象方法也没有方法体,那么当我们在接口的实现方法里调用抽象方法时,会如何执行呢?

       结果是:抽象类子类的实现方法功能


  1. interface IProgram
  2.     {
  3.         void Fun();
  4.     }
  5.     abstract  class AProgram : IProgram
  6.     {
  7.         public abstract void AFun();
  8.         void IProgram.Fun()
  9.         {
  10.             AFun();
  11.         }
  12.     }
  13. class Program:AProgram
  14.     {
  15.         public override void AFun()
  16.         {
  17.             Console.WriteLine("I am AProgram.");
  18.         }

  19.         staticvoid Main(string[] args)
  20.         {
  21.             IProgram pro =new Program();
  22.             pro.Fun();
  23.         }
  24.     }

接口的作用

         1、接口的定义方面来说,接口其实就是类和类之间的一种协定,一种约束

         2、目的是方便统一管理.另一个是方便调用.当然了,不使用接口一样可以达到目的.只不过这样的话,这种约束就不那么明显,如果这样类还有Duck类等等,比较多的时候难免         有人会漏掉这样方法.所以说还是通过接口更可靠一些,约束力更强一些.


接口和抽象类的区别

 

       1、接口用于规范,抽象类用于共性。 

       2、接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。

       3、抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。

       4、抽象类可以提供某些方法的部分实现,接口不可以。

       5、抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的

       6、在抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接                 口是一个类的规                范了)。

       7、接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序                的代码或派生类                 中访问)。

       8、此外接口不能包含字段、构造函数、析构函数、静态成员或常量。


更多精彩请点击 http://www.gopedu.com/article


0 0
原创粉丝点击