Java 实现接口并扩展实现相同接口的类?

Java 实现接口并扩展实现相同接口的类?,java,interface,Java,Interface,实现接口和扩展实现同一接口的类会导致任何问题吗?(混乱除外) 例如: interface IDo public abstract class DoIt implements IDo public class IllDo extends DoIt implements IDo (请忽略这似乎是错误的)当您扩展一个类时,您将继承它的整个接口,包括它实现的任何接口或它派生的类。因此,任何扩展DoIt的类都会自动实现IDo,其本质是扩展实现它的类。您可以将implements子句放在声明上,但它对类没

实现接口和扩展实现同一接口的类会导致任何问题吗?(混乱除外)

例如:

interface IDo
public abstract class DoIt implements IDo
public class IllDo extends DoIt implements IDo

(请忽略这似乎是错误的)

当您扩展一个类时,您将继承它的整个接口,包括它实现的任何接口或它派生的类。因此,任何扩展
DoIt
的类都会自动实现
IDo
,其本质是扩展实现它的类。您可以将
implements
子句放在声明上,但它对类没有任何进一步的影响。但是,正如回答中所述,这样做是有原因的:它说明了您特别希望该类实现接口,这意味着如果修改超类以不再包含
implements
子句,则子类会中断(因为它缺少接口所需的某些内容)或者保留其原始约定。

不应该有任何问题,只是实现相同的接口是多余的。声明该接口至少应该在IDE中发出警告,但不太可能导致问题(除了可能要求
IllDo
直接覆盖
IDo
中的每个成员之外)。我无法决定它是否会停止运行(看到超类已经有了这些方法)或强制子类提供自己的方法。Chee TJ Crowder和@Draco18s,很高兴知道我现在可以安全地(但感觉有点错误)使用此代码。在正常情况下,它确实是毫无意义的,但我的处境确实需要此解决方案。@T.J.Crowder从我的角度来看,它不是毫无意义/误导性的。实际上非常流行的
java.util.Collection
框架遵循相同的约定,但我知道这纯粹是基于观点的。(最后,无论采用哪种方法都不会有任何区别。)@T.J.Crowder是的,我同意。我不确定旧版本是否支持此功能。但是,在IDE中,在开发/维护代码时,如果我们需要查看
ArrayList
或此处
IllDo
类的层次结构,我们需要查看其父类也就是说,它是任何类型的(意思是实现一个接口)。因此,如果我们添加
implements
子句,就很容易知道它的类型,也很容易遍历/移动代码。(仍然基于观点):P:)