2017-04-05 60 views
0

我懷疑是用的方法和接口實現一個簡單的類之間。不是抽象類。爲什麼我們不能創建一個List類,給所有的方法實現並使Array List或Linked List擴展它。不是方法的實現相同。爲什麼列表中選擇接口而不是類

+4

其他列表實現可以此後再也沒有'extend'別的 – QBrute

+0

@QBrute:我知道這似乎是顯而易見的,但是這是一個答案,而不是評論。 –

+0

「不是抽象類」,那麼你需要爲所有方法提供實現。你會使用哪種實現?也許像ArrayList那樣由數組備份。但在那種情況下,你將如何創建其他列表像LinkedList?你需要擴展這個'List'(真正的ArrayList),但是你也會繼承所有那些冗餘的東西,比如數組持有數據的字段。列表界面更直觀。 – Pshemo

回答

7

不,實現是不一樣的。鏈接列表包含雙向鏈接節點的集合,並針對快速插入/移除進行了優化。一個數組列表由一個引用數組支持,並針對隨機訪問進行了優化,但隨着元素的添加和刪除,效率會降低。

定義List作爲界面允許呼叫者無關應用的內部細節基於列表的語義。

1

在Java中,多繼承是不可能的。所以如果一個班級extends其他班級,它不能擴展任何其他的。而實施interface是沒有限制的。您可以使用多個接口與一個類別implement

相關問題