您现在所在的位置:首页 >学习资源 > Unity游戏/VR/AR入门教材 > VR开发入门教程30:控制台编程 接口和索引器

VR开发入门教程30:控制台编程 接口和索引器

来源:奇酷教育 发表于:

接口在构建问题的类过程中,我们经常会遇到一种特殊的情况,在描述某个类的各个方法时,对每个方法我们只能给出其功能实现的要求(原形声明

接口
在构建问题的类过程中,我们经常会遇到一种特殊的情况,在描述某个类的各个方法时,对每个方法我们只能给出其功能实现的要求(原形声明)但不能给出具体的功能实现(函数定义体)。因为我们所处理的问题只是一个泛泛的功能说明,并没有针对某一具体类型的问题来说明。
 
含义:    
一组只有成员方法声明没有方法体的方法集。    
接口定义了一组成员函数,但没有具体加以实现,其实现则是由实现该接口的类来加以具体完成的。
 
接口中只能包含方法、属性、索引器和事件的声明。
接口的定义
要点:类似于类的定义格式,只是以 interface作为定义符。
 
格式:
[访问修饰符] interface 接口名
返回值类型 方法名([参数列表]);(只有声明而无方法体)
}
或:
[访问修饰符] interface 派生的接口名 : 父接口名列表
 {     
返回值类型 方法名([参数列表]);(只有声明而无方法体)
 }
 
接口中声明的方法都是默认public的 不能自定义访问级别
接口中声明索引器的方法:
返回值类型 this [【参数列表】最少有一个参数]{set;get;}
 
示例:
public interface Dispaly
{
     void ViewImage();
}
接口实现
通过定义一个类同时采用:来指明所实现的接口名,并在该类中实现接口中的所有成员方法且给出方法体定义。
 
类中所实现的接口中的成员函数的原型都应该与它在 接口中的原型定义保持一致;
并在类中重写接口中的所有成员方法;
通过实现接口,从而可扩充或增加该类的功能。
接口只定义方法名,而类实现接口内部的方法的代码
 
语法:
class 类名 : 接口列表(,分割)
{
     // 所有接口定义方法的实现
}
 
一个类可以实现多个接口
 
接口的实现分为:隐式实现和显式实现。
如果类或者结构要实现的是单个接口,可以使用隐式实现
如果类或者结构实现了多个接口那么接口中相同名称成员就要显式实现。
显式实现是通过使用接口的完全限定名(接口名.方法名)来实现接口成员的。
接口回调
接口也是引用数据类型,指向接口的引用也可以指向任意实现了该接口的类创建的实例
接口回调,即接口的引用可以指向实现了接口的类的实例
 
接口回调均可以访问到实现类里实现的方法
 
注意:
显式实现的方法只能用接口回调来调用到
无法用实现类引用调用到
示例:
public interface IHello
{
void Bellow();
}
 
///
/// 显式接口实现
///
public class Speak : IHello
{
    void IHello.Bellow()
    {
        Console.WriteLine("Hello");
    }
}
 
class MainClass
{
    public static void Main (string[] args)
    {
        Speak speak = new Speak();
        //speak.Bellow() error
        (speak as IHello).Bellow();// 不安全 原因:无法保证待转换的对象所在的类确实实     
                                             现了该接口 有可能出现空指针异常
        IHello ih = speak as IHello;
        if (ih != null)
        {
           ih.Bellow();//安全
        }
    }
}