为什么接口而不仅仅是常规类

时间:2018-03-27 00:38:53

标签: oop interface

这是一个新手问题。

我理解接口,抽象类等的技术实现,我确实理解程序的差异以及如何以及何时使用它们。我理解一个接口就像一个没有具体定义的强制合同,所有实现类都必须实现,但我不明白为什么这样的合同应该首先被强制?

例如,我有一个酒店'H'有一些可以保留的房间,

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

... other methods
}
另一方面,我旅行预订网站A1,A2,A3等可能有他们自己的折扣/佣金计划,可能向他们的客人向上/向下销售,但我没有得到的是什么是否可能与Hotel'H'预订政策有关。因为H酒店唯一有兴趣以他们的要价填充房间。

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

感谢。

2 个答案:

答案 0 :(得分:1)

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

就像JDBC接口一样。 Java提供了一组接口作为JDBC,数据库供应商确实为这些接口提供了实现。

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

Statement stmt = conn.createStatement( )

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

答案 1 :(得分:0)

所有强迫或强制检查语言都有助于发现我们的错误。

在这种情况下,它可以防止预订网站试图预订具有您未实施功能的房间的错误。