接口和类相似,但接口只为成员提供定义而不提供实现。接口和类的不同之处有:
1 接口的成员都是隐含抽象的。相反,类可以包含抽象成员和具体实现的成员。
2 一个类(或结构体)可以实现多个接口。相反,类只能继承一个类,而结构体完全不支持继承(只能从System.ValueType派生)。
接口声明和类声明相似,接口声明的关键字是interface。但接口不提供其成员的实现,因为它的所有成员都是隐式定义为抽象的。
这些成员将有实现接口的类成员或结构体实现。接口只能包含方法,属性,事件,索引器,这些正是类中可以定义为抽象的成员。
我们在unity中写一个简单的例子。
工程目录结构如下图
其中DateInterface.cs为接口文件,代码如下:
using UnityEngine;
using System.Collections;
public interface DateInterface {
string GetName();
void SetName(string name);
}
我们定义了一个接口名字为DateInterface,接口中有两个方法 GetName,SetName
Data类继承接口DateInterface 并实现接口中的两个方法,代码如下
using UnityEngine;
using System.Collections;
public class Date : DateInterface{
private string name;
public string GetName(){
return name;
}
public void SetName(string name){
this.name = name;
}
}
接着我们写一个测试的类TestInterface,代码如下
using UnityEngine;
using System.Collections;
public class TestInterface : MonoBehaviour {
public string name;
private Date date = new Date();
public void SetName(){
date.SetName (name);
}
public void GetName(){
Debug.Log ("name "+date.GetName());
}
}
我们创建两个button
把脚本TestInterface挂在Canvas上,然后给SetName按钮和GetName按钮添加点击相应事件分别对应TestInterface中的SetName和GetName方法。
把TestInterface中的name字段设为"老王"
先点击SetName按钮再点击GetName按钮,我们就可以从Console面板中看到输出的日志