继承中的循环层次结构

时间:2012-02-27 18:26:28

标签: java compiler-construction programming-languages

我目前正在为java编写一个编译器。 JLS说“类层次结构必须是非循环的”。但是那个案例呢:

            B extends A
            C extends A

            D extends B
            D extends C

这是一个非循环图但无效如何检测到这种情况?我目前正在使用BFS,每当我看到后边缘时,我知道有一个循环,但BFS算法没有检测到上述情况。

2 个答案:

答案 0 :(得分:7)

D继承自多个类,Java中不允许多重继承。这就是你如何发现它。

答案 1 :(得分:0)

如果您的树代表类继承层次结构,那么在向树中插入新的extend关系之前,只需添加一个检查以确保类X还没有X extends其他类。