我一直将收集的数据结构实例化为子实例并通过其父接口声明。例如,声明为父接口并初始化为子实例
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