为什么我们需要Java中的接口?

时间:2010-08-20 05:36:17

标签: java interface

在Java中实现多重继承,我们使用接口。它是接口的唯一用途吗?如果是,Java中接口的主要用途是什么?为什么我们需要Java中的接口?

5 个答案:

答案 0 :(得分:46)

我想说主要用途是多态,或者能够在许多不同的对象上执行相同的操作。如果不同的对象都实现相同的接口并具有相同的方法,则可以将所有这些对象存储在Vector中,并迭代通过Vector调用每个对象的方法。

答案 1 :(得分:30)

我还在考虑如何使用接口。我希望这会有助于其他人:

  

接口是合同(或协议,或共同理解)   这些课程可以做什么。当一个类实现某个时   接口,它承诺为所有抽象提供实现   接口中声明的方法。接口定义了一组常见的   行为。类实现接口同意这些   行为并为行为提供自己的实现。这个   允许您在界面上编程,而不是实际编程   实现。接口的主要用途之一是提供一个   两个对象之间的通信合同。如果你认识一堂课   实现一个接口,然后你知道该类包含具体的   在该接口中声明的方法的实现,你是   保证能够安全地调用这些方法。换一种说法,   两个对象可以根据中定义的契约进行通信   接口,而不是他们的具体实现。

     

其次,Java不支持多重继承(而C ++   一样)。多重继承允许您从更多派生子类   超过一个直接超类。如果两个直接,这就会产生问题   超类具有冲突的实现。 (跟随哪一个   子类?)。但是,多重继承确实有它的位置。   Java通过允许您“实现”多个来实现这一点   接口(但您只能从一个超类“扩展”)。   由于接口仅包含没有实际的抽象方法   实现时,多个接口之间不会产生冲突。   (接口可以保持常量,但不建议使用。如果是子类   实现两个具有冲突常量的接口,即编译器   将标记出编译错误。)

来自:http://www.ntu.edu.sg/home/ehchua/programming/java/J3b_OOPInheritancePolymorphism.html#zz-6.6

答案 2 :(得分:16)

除了这些响应之外,我会说接口最重要的用途是减少软件中组件之间的耦合。

接口允许表示类之间如何相互通信而不依赖于实际实现的协议。

这允许我们在不改变编译代码的情况下替换其他人的实现(对测试或更改用例非常有用)。

答案 3 :(得分:5)

您需要它们,以便您可以在层次结构外键入对象。

例如,可以比较的对象几乎可以在对象层次结构的任何位置 - 它们不需要具有可以比较的共同祖先。 String可以进行比较,Integer可以进行比较,你甚至可以制作自己可以比较的Frame(例如,如果框架比其他框架“更少”更多的是在前景 - 即它是否会覆盖另一帧)。因此,如果你想引用一个可以比较的东西,你将被迫用最一般的祖先声明一个变量 - 在这种情况下,Object。这太笼统了,因为它也可以接收不可比的值(当你试图比较它们时会抛出错误)。

因此,接口Comparable:它选择所有在子类 - 超类层次结构中实现比较功能的类。

答案 4 :(得分:-3)

如果没有它,有些代码将无法编译。

例如,在:

for (String name : list)
{
    System.out.print("\nIn foreach loop: name: " + name);
}

list必须实施java.lang.Iterable interface