oop - 为什么是接口(interface)而不是普通类

标签 oop interface

这是一个新手问题。

我了解接口(interface)、抽象类等的技术实现,我确实了解编程差异以及如何以及何时使用它们。我知道接口(interface)就像一个没有具体定义的强制契约(Contract),所有实现类都必须实现,但我不明白为什么首先要强制执行这样的契约(Contract)?

例如,我有一家酒店'H',有一些房间可以预订,

interface H{
//example method to implement  
reserveRoom(int n, ...) {}

... other methods
}

另一方面,我有旅游预订网站 A1、A2、A3 等,它们可能有自己的折扣/佣金计划,可能会向上销售/向下销售给他们的客人,但我没有得到的是这可能与“H”酒店预订政策有关吗? H 酒店唯一有兴趣以他们的要价入住房间。

请解释为什么需要这样的使用接口(interface)设计?

谢谢。

最佳答案

interface 视为您实现的规则集。如果您遵循规则集,您可以保证消费者能够无缝地转向您的实现。

例如 JDBC 接口(interface)。 Java 提供了一组接口(interface)作为 JDBC,数据库供应商确实提供了这些接口(interface)的实现。

这就是为什么无论您连接到哪个数据库,您下面的声明都有效。

Statement stmt = conn.createStatement( )

考虑一下,没有接口(interface) (JDBC),MySql 驱动程序将 createStatement() 更改为 makeStatement()。您将不得不更改代码,最终将编写特定于数据库的代码

关于oop - 为什么是接口(interface)而不是普通类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49502709/

相关文章:

c# - 根据接口(interface)字符串名称实例化类

java - 如何使用第三方类对象作为 HashMap 键?

c# - 使用 C# 接口(interface)扩展现有应用程序

Python:跨模块和 shell 共享对象

c# - 在 C# 通用接口(interface)中实现通用 C++/CLI 接口(interface)

c# - 如何让一个抽象类需要一个接口(interface)由后代类实现?

java - 如何应对历史敏感性?

c++ - 从程序集中调用的 C++ 方法返回对象数据

c# - 通用可绑定(bind)接口(interface)

.net - 如何以编程方式(在运行时)向类添加接口(interface)