Java 在声明对象时使用超类或派生类的区别
两者的区别是什么Java 在声明对象时使用超类或派生类的区别,java,Java,两者的区别是什么 Collection c = new ArrayList(); 及 它们似乎都是ArrayList类型,因此能够调用相同的方法。在第二种情况下,您可以在c上调用特定于ArrayList的方法,因为c被声明为类型ArrayList 在第一种情况下,您只能调用为集合定义的方法(并且必须位于ArrayList) 例如,ArrayList声明使用索引(如get和indexOf)但集合没有索引的函数。ACollection是一个接口,它定义了共享集合行为的最高级别,并扩展了Iterab
Collection c = new ArrayList();
及
它们似乎都是ArrayList类型,因此能够调用相同的方法。在第二种情况下,您可以在
c
上调用特定于ArrayList
的方法,因为c
被声明为类型ArrayList
在第一种情况下,您只能调用为集合定义的方法(并且必须位于ArrayList
)
例如,ArrayList
声明使用索引(如get
和indexOf
)但集合没有索引的函数。ACollection
是一个接口,它定义了共享集合行为的最高级别,并扩展了Iterable
(它只是定义了迭代器()
方法)
列表
是定义最高级别的共享列表
行为的接口
ArrayList
是列表的一种实现,通常不会在声明中使用,除非您需要实现保证(例如,快速索引访问),但可以用作列表值
阅读文档以查看差异–API中描述了这些差异。实现(ArrayList
)将在其实现的每个接口中对每个方法有一个特定于类型的实现。与多态性有关
ArrayList c = new ArrayList();