java - 接口(interface)的循环继承

标签 java inheritance interface cyclic

我明白为什么Java中不允许类的循环继承,但我不明白为什么不允许接口(interface)的循环继承。举例说明:

interface Foo extends Bar {/*methods and constants*/}

interface Bar extends Foo {/*methods and constants*/}

接口(interface)不需要实例化,那么什么阻止它们相互扩展呢?

顺便说一句,我读了这个问题,但这不是关于接口(interface)而是关于类: Cyclic inheritance hierarchy in Java

提前致谢。

最佳答案

不,但是接口(interface)的扩展是拆分协议(protocol)的一种方式。请记住,接口(interface)是提供一组方法的实现的协议(protocol)。

public interface A extends B {
    public void myMethod();
    public void myOtherMethod();
}

您是说接口(interface) A 是由这些方法以及接口(interface) B 中的所有方法定义的。现在,如果接口(interface) B 说..

public interface B extends A {}

你是说接口(interface)B是由接口(interface)A中的方法定义的。那么接口(interface) A 的定义是什么。一些方法和接口(interface)B。接口(interface) B 是由什么定义的?接口(interface)A,由几个方法和接口(interface)B定义!看看这是怎么回事?

允许这样做没有逻辑意义。

关于java - 接口(interface)的循环继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35270168/

相关文章:

python - 从子外部调用父方法

java - fragment 到 Activity 通信

java - 泛型问题

c# - .NET Framework 内置接口(interface),构建自定义数据结构时的建议?

java - 如何让 java 1.6 applet 在 mac os x 上工作

java - Unirest 发布的 GZIPOutputStream 不适用于 python Flask api

java - 将类传递给另一个方法

java - Redis hmget 超时时间

javascript - 这个扩展的DocumentFragment中出现Illegal Invocation的原因是什么?

c# - 视觉继承 - 将设计器中的控件添加到 TableLayoutPanel 中托管的面板