c# - 接口(interface)的使用,实际和现实世界的例子

标签 c# interface

我一直在努力理解接口(interface)到底是什么,理论上我已经很好地理解了这个定义。但是当谈到实际使用它们时,我想到了一些问题。

大多数资源都是这样定义接口(interface)的:

“接口(interface)是其自身与任何实现它的类之间的契约。该契约声明任何实现该接口(interface)的类都将实现该接口(interface)的属性、方法和/或事件。接口(interface)不包含实现,仅包含接口(interface)提供的功能的签名。接口(interface)可以包含方法、属性、索引器和事件的签名。”

这很容易理解,但我的问题是,如果接口(interface)(根据这个定义)是它们与类之间的某种蓝图或契约,那么如果我定义这个接口(interface)实际上会发生什么,

interface ITest {
    int SomeTestVariable { set; get;}
    int SomeTestMethod ();    
}

创建一个实现该接口(interface)及其所有方法的类

class Test: ITest {
    int SomeTestvariable { set; get;}
    int SomeTestMethod () {
        return 1;
    }   
}

在实现所有方法和属性之后,我将其删除。

class Test {
    int SomeTestvariable { set; get;}
    int SomeTestMethod () {
        return 1;
    }   
}

现在我必须有一个类使用了这个蓝图或契约(Contract)。那么把这个蓝图写在一张纸上和做一个界面有什么区别呢?

最佳答案

优点是您可以编写接口(interface),并编写使用该接口(interface)的代码在任何人编写它的实现之前

当然,如果您已经拥有唯一一个在使用该接口(interface)之前实现该接口(interface)的类,那么该接口(interface)对您没有好处,但是如果您还没有编写实现怎么办(还要考虑以下情况有不止一种类型正在实现接口(interface))?

一个简单的例子是编写一个简单的 Sort 方法。我可以为每种可能的数据类型编写一个 Sort 实现,或者我可以编写一个排序方法,假设每个项目都实现一个 IComparable 接口(interface)并且可以进行 self 比较。然后我的 Sort 方法可以使用该接口(interface)编写代码 远早于您编写要比较的对象

关于c# - 接口(interface)的使用,实际和现实世界的例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20576639/

相关文章:

java - 我们如何在java中创建接口(interface)对象?

java - 自动实现接口(interface)时参数从哪里来?

java - 在不影响现有系统的情况下更新新的 Java 库

java - 是我导师的界面有问题吗?

c# - 编译时检查一个值以实现多个接口(interface)

c# - Firebase 3 : creating a custom authentication token using . 网络和 c#

c# - OleDbCommand 中的参数未更改

C# - System.Windows.Forms.Keys - 如何将应用程序热键保存在一个地方

c# - 如何在 Visual Studio 中复制错误消息

c# - 生成 wcf 代理与 ChannelFactory