2
A
回答
4
我試圖解釋你的圖表中的代碼如下:
interface A extends B, C, D { }
interface B { }
interface C { }
interface D extends F{ }
interface E extends F{ }
interface F extends A{ }
,編譯器失敗,錯誤:
java: cyclic inheritance involving A
所以,正如所料,循環繼承是不允許的。
錯誤消失如果F
確實不是延伸A
。
2
它確實產生一個錯誤,你嘗試過嗎?
interface A extends D {} // error on this line: The hierarchy of the type A is inconsistent
interface D extends F {} // error on this line: The hierarchy of the type D is inconsistent
interface F extends A {} // error on this line: Cycle detected: a cycle exists in the type hierarchy between F and A
0
錯誤是在d擴展F和E擴展F和F延伸的... 由於Java不支持多重繼承...這就是爲什麼接口被引入
+1
它確實支持多接口繼承。問題在於循環。 –
1
我看到下面的瘋狂用法:
interface I {
static final I CONSTANT = new C();
...
}
class C implements I {
}
這個工作的原因是.class(就像一個二進制.obj)包含其導入的符號信息。所以.java可以被編譯成.class。然後可以完成與其他.class文件的鏈接。
出於同樣的原因(鬆散鏈接)執行可能會失敗,當使用不同版本的jar進行編譯而不是運行時。
雖然有些編譯器可能會遇到特定的週期。
一個另外雖然
如果一個接口使用常量從另一個接口,在編譯時這些常量存儲在.class文件,並且在效果消失的進口。在那種情況下,至少有一個編譯器,它不檢測依賴關係,並且週期可能被破壞。這甚至可能導致錯誤的,陳舊的常量;反模式。
相關問題
- 1. PLSQL循環層次結構
- 2. Cytoscape js中的循環層次結構?
- 3. Sql層次結構循環查詢
- 4. 繼承中的循環層次結構
- 5. net.sf.json.JSONException:在層次結構中有一個循環
- 6. 在整個未知層次結構中循環R
- 7. 在循環中創建PHP數組的層次結構
- 8. 層次結構
- 9. 層次結構在SQL Server - 多層次
- 10. 在遞增結構值每次循環
- 11. Java中的循環繼承層次結構
- 12. 如何防止層次結構中的循環引用?
- 13. radgridview層次結構
- 14. UIView層次結構
- 15. 類層次結構
- 16. 類層次結構
- 17. 平面數據的層次結構
- 18. WordPress的頁面層次結構
- 19. 平面列表到層次結構
- 20. 單注頁面層次結構
- 21. c#構建層次結構
- 22. PHP類層次結構 - 層次結構中的最高類
- 23. Java:如何在界面層次結構中返回聲明的類型?
- 24. 在javascript中構建層次結構樹
- 25. 使用XSLT將平面XML結構更改爲層次結構
- 26. 如何在循環引用的層次結構中加載實例?
- 27. Apache Solr中的方面字段(不是層次方面)的層次結構?
- 28. 擴展類層次結構
- 29. 組織SQL層次結構
- 30. Drupal節點層次結構
箭頭表示什麼? – FrobberOfBits
箭頭的方向是指子接口還是超接口? –
箭頭A-> B表示A擴展B – user3520274