1.定义:

接口是一个可以包含方法、属性的类型。

2.使用规则:

(1)接口不能实例化,所以不能包含构造函数和静态成员。

(2)接口中的所有成员都没有方位修饰符(默认是public,且不需要显式声明)。

(3)以“interface”关键字声明接口类;名字为“I+自定义名”。

(4)实现接口的类必须实现接口中定义的所有成员,并且相匹配,如果接口包含泛型,那么实现类必须确定泛型。

(5)在c#中一个类只能继承一个父类,但可以实现多个接口。

3.代码示例:

接口类:

using UnityEngine;
using System.Collections;

//这是只有一个必需方法的基本接口。
public interface IKillable
{
    void Kill();
}

//这是一个通用接口,其中 T 是将由实现类提供的数据类型的占位符。
public interface IDamageable<T>
{
    void Damage(T damageTaken);
}

实现接口的类:

using UnityEngine;
using System.Collections;

//实现IDamageable接口时,必须确定T的类型
public class Avatar : MonoBehaviour, IKillable, IDamageable<float>
{
    //IKillable 接口的必需方法
    public void Kill()
    {
        //执行操作
    }

    //IDamageable 接口的必需方法
    public void Damage(float damageTaken)
    {
        //执行操作
    }
}

4.适用场景:

 因为一个类可以实现多个接口,所以接口的灵活性比继承更高。

并且接口可以定义多个完全不相关类的通用功能,比如“墙类”和“车类”,两者毫不相关,但是都具有“可被摧毁”这一个特性。这种情况下,设计父类没有意义,可以设计接口定义通用特性,在墙类、车类中自实现。

 

更多推荐