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

Vin*_*mar 55 java interface

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

小智 47

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

  • Rob我同意你的看法,但我想通过将接口实现的概念与类扩展(实际上在c ++中发生冲突)分开,你可以在没有多重继承的情况下实现多态性 (2认同)

Meg*_*ind 32

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

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

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

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


Pet*_*ans 17

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

接口允许表示类之间关于如何彼此通信而不与实际实现相关联的协议.

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


Ama*_*dan 5

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

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

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