我知道Java中不允许使用循环继承层次结构.编译器会抛出错误,但我真正感兴趣的是知道编译失败的确切原因.
class A extends B{}
class B extends C{}
class C extends A{} // this will give you compile time error.
Run Code Online (Sandbox Code Playgroud)
在我编写代码的那一刻,编译器将抛出错误的原因是什么 class C extends A{}
这种关系根本不可能.它定义了一个无限递归类.为了定义class C,您需要class A定义class A您的需要class B,并定义class B您的需求class C- 您将回到起点.这是无限的,所以编译器不能这样做,它也没有逻辑意义.