美文网首页Unity基础入门分享
[转]Unity3D基础知识 接口

[转]Unity3D基础知识 接口

作者: 小小小小小丶敏 | 来源:发表于2017-09-20 11:47 被阅读17次

接口定义:

接口描述的是可属于任何类或结构的一组相关功能,所以实现接口的类或结构必须实现接口定义中指定的接口成员。
接口使用interface关键字进行定义,可由方法、属性、事件、索引器或这四种成员类型的任意组合构成。

接口的特性:

1、接口类似于抽象基类,不能直接实例化接口;接口中的方法都是抽象方法,实现
接口的任何非抽象类型都必须实现接口的所有成员。
2、接口不能包含常量、字段、运算符、实例构造函数、析构函数或
类型、不能包含静态成员。
3、接口成员是自动公开的,且不能包含任何访问修饰符。
4、接口自身可从多个接口继承,类和结构可继承多个接口,但接口不能继承类。

interfaceIProgram
   {
       void Fun();
   }
   class Program:IProgram
   {
        //显式实现接口成员
       void IProgram.Fun()
       {
           Console.WriteLine("I amFun.");
       }
       staticvoid Main(string[] args)
       {
          IProgram p =new Program();  //声明一个接口实例,但不是对接口进行实例化
           p.Fun();
           Console.Read();
       }
   }

接口的特性:

实现接口可以显式实现和隐式实现,那么这两种实现到底有什么优缺点呢?
一般情况,当类或者结构要实现的是单个接口,可以使用隐式实现。
如果类或者结构继承了多个接口且接口中具有相同名称成员时,就要用到显式实现,当显式实现方式存在时,隐式实现方式就失效了。


interfaceIProgram
    {
        void Fun();
    }
    interface IAProgram
    {
        void Fun();
    }
class Program :IProgram, IAProgram
    {
        void IProgram.Fun()  //显式实现接口IProgram
        {
            Console.WriteLine("I amIProgram Fun.");
        }
        void IAProgram.Fun()  //显式实现接口IAProgram
        {
            Console.WriteLine("I amIAProgram Fun.");
        }
        //public void Fun()   //隐式实现接口
        //{
        //   Console.WriteLine("I am Program Fun.");
        //}
        staticvoid Main(string[] args)
        {
            //IProgram p = new Program();
            //p.Fun();
            //IAProgram ap = new Program();
            //ap.Fun();
            Program pro =new Program();
            ((IProgram)pro).Fun();
            ((IAProgram)pro).Fun();
            Console.Read();
        }
}

接口的继承:
1. 接口继承和类继承不同:首先,类继承不仅是说明继承,而且也是实现继承;而接口继承只是说明继承。
2.也就是说,派生类可以继承基类的方法实现,而派生的接口只继承了父接口的成员方法说明,而没有继承父接口的实现。
3.C#中类继承只允许单继承,但是接口继承允许多继承,一个子接口可以有多个父接口。

接口的覆盖:


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

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

 
interfaceIProgram
    {
        void Fun();
    }
    abstract class AProgram : IProgram
    {
        public abstract void AFun();
        void IProgram.Fun()
        {
            AFun();
        }
    }
classProgram:AProgram
    {
        public override void AFun()
        {
            Console.WriteLine("I amAProgram.");
        }
        staticvoid Main(string[] args)
        {
            IProgram pro =new Program();
            pro.Fun();
        }
   }

接口和抽象类的区别:

1.接口用于规范,抽象类用于共性。
2.接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也以定义非静态的类变量。
3.抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。
4.抽象类可以提供某些方法的部分实现,接口不可以。
5.抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的

相关文章

  • [转]Unity3D基础知识 接口

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

  • (转)Unity3D基础知识学习笔记

    1、基础知识: 标题栏 菜单栏 工具栏:变换工具、gizmos切换、播放控件、层列表、布局列表 功能窗口 2、资源...

  • 接口测试1--理论基础

    本节内容 接口及接口测试 网络基础知识:IP,域名, DNS及端口 网络基础知识:OSI七层模型及TCP协议 HT...

  • 接口测试书目录

    接口测试 接口测试基础知识篇 接口测试第二课(APP抓包) 接口测试第三课(HTTP协议简介) 接口测试第四课(H...

  • Go接口类型的使用

    定义接口 基础知识 接口不能包含变量,只能定义一组抽象的方法集合。 类型不需要显式声明它实现了某个接口:接口被隐式...

  • 接口和抽象类有什么区别

    学习Java基础知识,打通面试关~十三接口与抽象类面试常客:谈谈你对抽象类和接口的理解 接口用interface修...

  • 思科设备VRRP/HSRP配置

    基础知识:环回接口 环回接口习惯上被称为loopback接口,是路由器上的一个逻辑、虚拟接口。路由器默认没有任何环...

  • 接口测试03--接口测试怎么测?

    哈喽,大家好!我是minisummer!首先感谢您的关注!今天给大家分享的内容是接口测试必备的接口基础知识:接口文...

  • Unity项目工程结构(一)

    转自:不以规矩,不成方圆 unity3d系列教程二 https://github.com/CodeSuperHer...

  • 接口方法[转]

    转自 Java 技术栈 微信公众号 最近面试一些 Java 程序员,不乏工作 4、5 年经验的,当我问他一些 Ja...

网友评论

    本文标题:[转]Unity3D基础知识 接口

    本文链接:https://www.haomeiwen.com/subject/wpansxtx.html