2

我知道这是一个被问了 100 多次的问题,但我想提供一些我自己的定义,看看我是否正确理解了一个接口。

问题:

什么是接口?

接口定义了代码设计的结构。接口为您的设计奠定了基础,由一组抽象方法组成,并包含类必须实现的行为。

什么时候使用接口?

当要在整个项目中重复使用类似的设计方法时。这会在项目中创建行为结构。

为什么要使用接口?

您在项目中使用界面来创建地基,就像建造新家一样。当一个新家建成时,框架被建造,然后墙壁和门等等被添加。

我上面的答案是我描述的接口,想知道我是否正确?如果不是,请解释一下?

谢谢

4

3 回答 3

4

您使用一个接口,以便任何类只要实现它就可以使用它。这就是为什么List如此酷,我们在日常编程中使用它的原因。

牛和山羊都是动物,它们吃、走路、睡觉等。你不想分别声明相同的行为。如果你现在有一只新动物,你将不得不再次定义类似的行为。接口迫使您实现所需的行为。

于 2013-08-14T13:27:17.757 回答
2

我认为接口更像是一个可选合同——您指定方法名称、参数和返回类型,如果一个类选择实现该接口,那么它必须符合该合同的条款。它更像是 API 规范而不是设计基础,因为接口相对灵活。

请注意,这种灵活性为您选择使用接口的方式提供了相当大的余地。只要实现类提供商定的方法,实现完全取决于您。有些接口(例如Serializable)不需要任何方法,只是作为程序员对某个类的意图的标记。

接口的另一个用途是减轻 Java 不支持多重继承这一事实的缺点。尽管每个实现类都必须包含实际代码,但您可能会以“类继承”的方式使用接口,以指示某组类从一些常见的、更抽象的类派生行为(在名称上,如果不一定在实现中)图案。

我肯定会建议查看 javadocs(可能是 Collections 框架)以获取更多接口示例。继续合同类比,接口的主要用途是作为一种 API,它指定您可以依赖的行为,而无需了解实现细节。

家庭类比的问题在于它的限制性太强——接口不会像地基规定建筑物的特定结构那样限制类的设计。此外,一个建筑物只能有一个基础,而在 Java 中,一个类可以实现的接口数量没有限制。

于 2013-08-14T13:42:19.720 回答
1

想想电视遥控器的类比。

什么

它是使用电视的标准方式(任何电视......平面屏幕、CRT、LED、LCD、等离子等)。

所以它基本上是电视的接口。现在,所有电视遥控器都必须有一些基本的常用按钮(On、Off、Vol+、Vol-、Ch+、Ch-),这些是界面中应该存在的方法。不同的品牌使用不同的技术来实现这些。

什么时候

现在所有的电视品牌都希望共享这种控制电视(这是一台大而复杂的机器)的标准方式。

为什么要 考虑它。它帮助消费者。就消费者而言,他/她不需要知道如何手动操作电视或从内部操作(您可以从电路板做到这一点!)

于 2013-08-14T13:34:53.130 回答