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

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

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

我也发现有关界面的实际使用。 然后我find了这个有用的解释。 希望这将有助于进一步观众。

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

其次,Java不支持多重inheritance(而C ++)。 多重inheritance允许您从多个直接超类派生一个子类。 如果两个直接的超类具有相互冲突的实现,则会造成问题。 (在子类中遵循哪一个?)。 但是,多inheritance确实有它的地位。 Java通过允许你“实现”多个接口(但是你只能从一个超类“扩展”)来做到这一点。 由于接口仅包含抽象方法而没有实际实现,因此在多个接口之间不会产生冲突。 (接口可以保持常量,但是不推荐使用,如果一个子类实现了两个具有冲突常量的接口,那么编译器会标记出一个编译错误。)

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

除了这些回应之外,我还要说接口最重要的用途是减less软件组件之间的耦合。

一个接口允许代表一个类之间的协议,他们将如何互相交谈而不被束缚于实际的实现。

这使我们能够replace别人的实现(对于testing或更改用例非常有用),而不必更改已编译的代码。

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

例如,可以比较的对象几乎可以在对象层次上的任何地方 – 它们不需要具有可以比较的共同祖先。 可以比较String s,可以比较Integer s,甚至可以创build自己的可以比较的Frame (比如说,如果一个帧比前景更多的话,它比另一个帧“小于” – 也就是说,其他框架)。 因此,如果你想引用一个可以比较的东西,你将被迫声明一个最普遍的祖先的variables – 在这种情况下, Object 。 这太笼统了,因为那样它也可以接收不可比较的值(当你试图比较它们时会产生错误)。

因此, Comparable接口:它select所有在子类 – 超类层次结构中实现比较function的类。

一些代码不会没有它编译。

例如,在:

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

list必须实现java.lang.Iterable interface