2012-02-27 157 views
1

我目前正在爲java編寫一個編譯器。 JLS說:「類層次必須是非循環的。」但情況如何:繼承中的循環層次結構

  B extends A 
      C extends A 

      D extends B 
      D extends C 

這是一個非循環圖,但無效如何檢測到這種情況?我目前正在使用一個BFS,並且每當我看到一個後端我知道有一個週期,但BFS算法沒有檢測到上述情況。

回答

7

D繼承自多個類,Java中不允許多重繼承。這是你如何檢測它。

+0

那麼一個類減速的形式:A類擴展B,C無效正確嗎? – 2012-02-27 18:32:33

+2

在Java中? [當然](http://en.wikipedia.org/wiki/Multiple_inheritance) – 2012-02-27 18:34:09

0

如果您的樹表示類繼承層次結構,只需添加一個檢查,以確保在類樹中插入一個新的X extends關係之前,類X還不是已經有其他類extend