使用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文档以及在线教程,但仍然不太清楚。有人可以给我一些解释吗?

回答:

如果声明myListArrayList,则修复其具体类型。每个使用它的人都将取决于此具体类型,并且很容易(甚至无意间)调用特定于的方法ArrayList。如果过了一段时间,您决定将其更改为例如LinkedListCopyOnWriteArrayList,则需要重新编译-

甚至可能更改-客户代码。接口编程消除了这种风险。

请注意,在Collection和之间ArrayList,还有另一个抽象层次:List接口。通常,列表的使用模式与映射,集合或队列的使用模式非常不同。因此,您通常需要尽早确定工作所需的类型,并且不会改变。将变量声明为a

List可使此决定变得清晰,并向其客户提供有关此集合遵守的合同的有用信息。Collection通常,OTOH除了迭代其元素外,并没有太多用处。

以上是 使用Collection接口创建ArrayList对象的多态性有什么好处? 的全部内容, 来源链接: utcz.com/qa/398402.html

回到顶部