我一直將收集的數據結構實例化爲子實例並通過其父接口聲明。例如,聲明爲父接口並初始化爲子實例
Set<E> collection1 = new HashSet<E>();
Map<E> collection1 = new HashMap<E>();
這是什麼原因。子類將繼承所有的方法,並且從Java類文檔中提到的所有方法都會被覆蓋,但是具有相同的含義。那麼聲明它們的原因是他們的父界面。
任何投入將大大幫助我使我的基礎更強。
編輯
感謝您的反饋。我明白了。 但在改變
Set<E> collection1 = new HashSet<E>();
到
Set<E> collection1 = new LinkedHashSet<E>();
我們將失去我們的參考我們原來的HashSet的,因爲我們宣佈爲基準設置的新LinkedHashSet。那麼這樣做有什麼意義呢? 如果有什麼方法可以在不丟失數據的情況下將舊實現轉換爲新實現,那麼這將有意義。
也許值得一提的底層實現,也被稱爲「具體落實」爲好。 – Durandal
@MagicMan注意到:) – NINCOMPOOP