有关接口类的问题

时间:2013-08-14 13:17:51

标签: java oop software-design

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

问题:

什么是界面?

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

何时使用界面?

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

为什么要使用界面?

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

我的上述答案是我所描述的界面,并想知道我是否正确?如果没有,请解释一下?

由于

3 个答案:

答案 0 :(得分:4)

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

奶牛和山羊都是动物,他们吃,走,睡等。你不想分别宣布相同的行为。如果您现在有了新动物,则必须再次定义相似的行为。界面会强制您实施所需的行为。

答案 1 :(得分:2)

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

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

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

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

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

答案 2 :(得分:1)

想想电视遥控器类比。

<强>什么

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

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

:当

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

<强>为什么 想一想。它有助于消费者。就消费者而言,他/她不需要知道如何手动操作电视或从内部(你可以从电路板上做到这一点!)