使用Collection接口创建ArrayList对象的多态性有什么好处?
我研究了多态性,并了解它可以进行动态方法绑定,如下所示。
假设动物类是抽象类。
public class AnimalReference{
public static void main(String args[])
Animal ref // set up var for an Animal
Cow aCow = new Cow("Bossy"); // makes specific objects
Dog aDog = new Dog("Rover");
// now reference each as an Animal
ref = aCow; ref.speak();
ref = aDog; ref.speak();
}
我曾经创建ArrayList的实例,例如:
ArrayList myList = new ArrayList();
但是通常我认为人们会这样写道:
Collection myList = new ArrayList();
所以我的困惑是声明为Collection有什么好处?我也不知道您可以在“ myList”前面有“ Collection”(不是抽象类的接口)。
为什么只说一遍不是好习惯:
ArrayList myList = new ArrayList();
我阅读了Collection接口和ArrayList Java文档以及在线教程,但仍然不太清楚。有人可以给我一些解释吗?
回答:
如果声明myList
为ArrayList
,则修复其具体类型。每个使用它的人都将取决于此具体类型,并且很容易(甚至无意间)调用特定于的方法ArrayList
。如果过了一段时间,您决定将其更改为例如LinkedList
或CopyOnWriteArrayList
,则需要重新编译-
甚至可能更改-客户代码。接口编程消除了这种风险。
请注意,在Collection
和之间ArrayList
,还有另一个抽象层次:List
接口。通常,列表的使用模式与映射,集合或队列的使用模式非常不同。因此,您通常需要尽早确定工作所需的类型,并且不会改变。将变量声明为a
List
可使此决定变得清晰,并向其客户提供有关此集合遵守的合同的有用信息。Collection
通常,OTOH除了迭代其元素外,并没有太多用处。
以上是 使用Collection接口创建ArrayList对象的多态性有什么好处? 的全部内容, 来源链接: utcz.com/qa/398402.html