在C#中理解接口

本文着重阐述接口是如何工作的和它可能的应用。

什么是接口

接口是为类或结构定义一个蓝图,接口的定义看起来类似于一个类,但是什么也没实现
接口定义属性,方法,事件,索引器,但是接口没有定义任何它们的实现,只是声明
他们的存在,接口不会实际定义任何功能,只是定义了和类发生交互的方式。

什么不是接口

接口不应该喝继承混淆,它们是两个非常不同的事,继承会定义许多实现和代码的复用,
接口仅仅是定义如何与其实现类发生通讯。就像签一个合同,一个类必须要实现接口制定的
行为。

什么时候应用接口

接口可以允许我们为一个类如何实现创建一个好的布局,这是因为接口给我们保证,当许多
部件用同一个接口时,它允许我们很容易的交替变换使用同一个接口的部件,动态编程就变得
容易了。

创建一个接口

有很多次你会想定义你自己的接口,接口是度量软件的伟大工具,当你定义了一个接口它类似一个类

就像你看到的,我没有实际定义任何功能。我所做的就是使用接口的类所要实现的功能,接口前缀通常
用 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 GreetEveryone(IHelloWorlder hw)
{
    
// Perform whatever logic you wish here
    hw.SayHello();
}

 
public void DoSomething()
{
    MyHelloWorld helloWorld 
= new MyHelloWorld();
    GreetEveryone(helloWorld);
}

如果我们要写另外一个类去实现接口,我们能改变DoSomething方法,让它使用新类,因为
我们在GreetEveryone使用了接口,因此不必作任何改动,


原文地址:https://www.cnblogs.com/flyinthesky/p/1225481.html