编辑:对我的问题的简单回答是 Java 允许一个接口扩展多个其他接口。这就是回答我的逻辑问题的原因,即如何将接口组合在一个通用接口中。这个答案没有出现在欺骗问题中。问题也不同,它与创建界面组无关。
在 Java 中是否有理由不能将一个接口定义为实现其他接口?我看到并且不满意的答案是“接口本身不包含实现,那么接口如何实现其他接口?” 好吧,在我看来,这是一个薄弱的答案,因为它更多的是对英语语义的认可,而不是对场景的逻辑解释。场景的逻辑解释是既然我们可以定义类来实现很多接口,为什么我们不能定义一个接口,它本身就代表一个接口的集合。
假设您有许多类,您希望每个类都实现一个包含许多接口的大型通用集。按照目前的情况,您必须明确写出每个类的列表。这意味着,如果以后您必须将另一个接口添加到您的许多列表中,您将不得不修改每个类。将所有接口合并到一个“超级接口”中将允许程序员只在一个地方进行更改。
在您回答“创建一个实现接口列表的抽象超类,并让您的所有子类扩展该超类”之前,请记住,您不能假设这些类尚未扩展类。implements 关键字的全部好处之一是您可以调整类而无需更改其分类,对吗?
我想长话短说:为什么程序员不能定义只是其他接口组的接口?或者,也许更好的问题是:如果我不能将接口定义为实现其他接口,我如何定义作为其他接口组的接口?
对于那些喜欢代码的人,我要问的是为什么不这样做......
public class Foo extends ParentClass1 implements IBar1, IBar2, IBar3{
}
public class Baz extends ParentClass2 implements IBar1, IBar2, IBar3{
}
...Java允许这样做不是更有意义吗:
public interface IAllBar implements IBar1, IBar2, IBar3{
}
public class Foo extends ParentClass1 implements IAllBar{
}
public class Baz extends ParentClass2 implements IAllBar{
}
这样以后,如果我创建 IBar4,我只需要修改 IAllBar.java 而不是 Foo.java 和 Baz.java。
编辑:所以根据下面的答案,我可以定义 IAllBar 来扩展所有这些接口,我会得到我想要的。我很高兴有些人愿意在跳到底部发布平均回复之前阅读整篇文章。