为什么接口有用?(面向对象编程)

5 oop interface implements

我已经了解了实现和接口的基础知识。我不明白什么时候使用接口。拥有一个接口需要什么条件?

例子:

/// Interface demo
Interface IDemo
{
    // Function prototype
    public void Show();
}

// First class using the interface
Class MyClass1 : IDemo
{
public void Show()
{
    // Function body comes here
    Response.Write("I'm in MyClass");
}
}

// Second class using the interface
Class MyClass2 : IDemo
{
public void Show()
{
    // Function body comes here
    Response.Write("I'm in MyClass2");
    Response.Write("So, what?");
}
}
Run Code Online (Sandbox Code Playgroud)

这两个类具有相同的函数名称和不同的主体。这也可以在没有接口的情况下实现。提供方法参考的目的是什么?当我扩展超类时,至少我获得了超类的属性和方法。

请给我一个清晰的解释和一个现实世界的场景,以便我更好地理解。

Ani*_*tla 3

首先,他们为用户提供合约,因此用户不需要知道使用了什么底层实现,而只需要知道合约。这会在底层实现发生变化时产生松散耦合。

现实世界的例子

通过这种方式,我们可以使用某些模式,例如策略和命令模式:使用策略模式和命令模式

策略模式的现实示例

命令模式应用的真实示例

抽象类和接口之间的区别

其中大部分内容都可以关于抽象类,请参阅此处了解差异:Interface vs Abstract Class (general OO)