本文着重阐述接口是如何工作的和它可能的应用。
什么是接口
接口是为类或结构定义一个蓝图,接口的定义看起来类似于一个类,但是什么也没实现
接口定义属性,方法,事件,索引器,但是接口没有定义任何它们的实现,只是声明
他们的存在,接口不会实际定义任何功能,只是定义了和类发生交互的方式。
什么不是接口
接口不应该喝继承混淆,它们是两个非常不同的事,继承会定义许多实现和代码的复用,
接口仅仅是定义如何与其实现类发生通讯。就像签一个合同,一个类必须要实现接口制定的
行为。
什么时候应用接口
接口可以允许我们为一个类如何实现创建一个好的布局,这是因为接口给我们保证,当许多
部件用同一个接口时,它允许我们很容易的交替变换使用同一个接口的部件,动态编程就变得
容易了。
创建一个接口
有很多次你会想定义你自己的接口,接口是度量软件的伟大工具,当你定义了一个接口它类似一个类
就像你看到的,我没有实际定义任何功能。我所做的就是使用接口的类所要实现的功能,接口前缀通常
用 I ,例如 IDisposable,IDataReader和IEnumerable。我确信大家都使用过这些,但是并不了解。
有许多一般使用的类去实现这些接口。
实现接口
现在我们知道如何创建接口,我们会看到如何为一个类实现接口,我们能实现一个存在
的或已经创建的接口
因为我们定义了两个方法在IHelloWorlder接口中,我们要确定我们在类中也定义这两个方法。
我们同意类实现任何接口要实现的方法。如果我们不定义,Visual Studio 会提示如下信息
定义方法:
public class MyHelloWorld : IHelloWorlder
{
public void SayHello()
{
Console.WriteLine("Hello world!");
}
public void SayGoodBye()
{
Console.WriteLine("Good Bye World!");
}
}
{
public void SayHello()
{
Console.WriteLine("Hello world!");
}
public void SayGoodBye()
{
Console.WriteLine("Good Bye World!");
}
}
使用接口
现在我们已经有了一个实现了的接口,
public void GreetEveryone(IHelloWorlder hw)
{
// Perform whatever logic you wish here
hw.SayHello();
}
public void DoSomething()
{
MyHelloWorld helloWorld = new MyHelloWorld();
GreetEveryone(helloWorld);
}
{
// Perform whatever logic you wish here
hw.SayHello();
}
public void DoSomething()
{
MyHelloWorld helloWorld = new MyHelloWorld();
GreetEveryone(helloWorld);
}
如果我们要写另外一个类去实现接口,我们能改变DoSomething方法,让它使用新类,因为
我们在GreetEveryone使用了接口,因此不必作任何改动,