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

2022-08-31 14:57:11

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


答案 1

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


答案 2

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

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

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

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