【发布时间】:2013-08-01 22:48:07
【问题描述】:
我在 Java 和 C# 代码中经常注意到这种模式,因此出于某种原因我认为这是一种“最佳实践”,但我不确定为什么。因此,例如在 Java 中我可能会看到...
List<String> list = new ArrayList<String>();
这仅在一个地方声明(显然),并且仅适用于一个代码块,有什么意义?为什么不说...
ArrayList<String> list = new ArrayList<String>();
...?
【问题讨论】:
-
有很多重复
-
一个流行的原因是您可以在不破坏代码的情况下更改类型(更改为另一个实现该接口的类型)。
-
另一个(仅限 .NET):
IEnumerable<T>无法修改集合,因为添加、删除或清除方法来自子接口ICollection<T>。因此,如果您希望它是不可变的,请使用基本接口。
标签: c# java oop inheritance interface