接口包含非抽象类或结构必须实现的一组相关功能的定义。 接口可以定义 static 方法,此类方法必须具有实现,按照约定,接口名称以大写字母 I 开头。
接口具有以下属性:
接口通常类似于只有抽象成员的抽象基类。 实现接口的任何类或结构都必须实现其所有成员。 接口可以选择性地定义其部分或全部成员的默认实现。
接口无法直接进行实例化。 其成员由实现接口的任何类或结构来实现。
一个类或结构可以实现多个接口。 一个类可以继承一个基类,还可实现一个或多个接口。
接口调用用法
class Program
{
static void Main(string[] args)
{
interfaceA iA = new A();
iA.AMethod("1234");
Console.ReadKey();
}
}
public interface interfaceA
{
void AMethod(string s);
}
public class A:interfaceA
{
public void AMethod(string s)
{
Console.WriteLine("AMethod " + s);
}
}
运行结果
多接口及继承
class Program:interfaceB
{
static void Main(string[] args)
{
Program p = new Program();
p.AMethod("A");
p.BMethod("B");
Console.ReadKey();
}
public void BMethod(string s)
{
Console.WriteLine(s);
}
public void AMethod(string s)
{
Console.WriteLine(s);
}
}
public interface interfaceA
{
void AMethod(string s);
}
public interface interfaceB:interfaceA
{
void BMethod(string s);
}
运行结果
在接口中实现事件
class Program
{
static void Main(string[] args)
{
A a = new A();
interfaceA iA = a;
iA.testEvent += iA_testEvent;
a.Trigger();
Console.ReadKey();
}
static void iA_testEvent(object sender, EventArgs e)
{
throw new NotImplementedException();
}
}
public interface interfaceA
{
event EventHandler testEvent;
}
public class A : interfaceA
{
public event EventHandler testEvent;
public void Trigger()
{
if (null != testEvent)
{
Console.WriteLine("Class A Trigger");
testEvent(this, EventArgs.Empty);
}
}
}