如果我们有抽象类,为什么要在 Java 中使用接口?

vig*_*esh 7 java interface

我有两个问题

  1. 即使抽象类可以完成接口的功能,为什么我们在java中需要接口?
    在搜索中,我发现抽象类无法完成接口功能的地方,即一个类需要实现多个接口。
    这是在java中提出接口概念的唯一原因吗?

  2. 接口中的静态最终变量有什么用?欢迎需要说明接口中变量用法的示例程序。

提前致谢。

Col*_*nic 5

  1. 就像你说的,你只能继承一个抽象类,但可以继承很多接口。此外,继承意味着“is-a”关系,但接口指定了对象必须支持的某些操作集——本质上是它的行为。我认为这些是不同的想法。根据我的经验,类往往是名词(例如IntegerList),接口是动词(例如CloneableSerializable)。

  2. 如果一个类实现了带有常量的接口,那么该类可以在没有限定类名的情况下引用这些常量(javapractices.com)。然而,正如这篇文章所解释的,这是一种不好的做法。


Nar*_*gis 5

接口在以下情况下很有用:

1->正如你所提到的,在Java中我们只能扩展一个类,但可以实现多个接口。这确实是实现的,例如,如果你想在你的类中创建一个后台线程并扩展一些类以实现可重用性,那么这有多糟糕你扩展了Thread类吗?在这种情况下,Runnable 来救援,它是一个接口。

2->接口也帮助我们强制执行某种设计模式。

3->也用作可标记接口,就像可序列化接口一样

接口中的变量是静态变量,充当全局变量,可以与实现该接口的所有类共享