在java中将对象类型设置为超类或接口有什么意义



我见过很多次这样的语句:

List list = new ArrayList<String>();

这样写有什么意义?我的意思是把对象的类型设置为一个超类或它的实现接口。这会有什么不同或提高性能吗?

备注

我的英语很差,我可能把题目和正文写得很混乱。请编辑该行,然后删除该行。

这句话意味着您可以使用使用ArrayList实现的List的所有功能,但也可以使用LinkedList内部的功能。虽然将对象类型设为ArrayList没有害处,但它可能很有用,例如,如果您有一个方法接受List参数而不是ArrayList,则您的选择已经扩展,并且您可以有其他实现该类型的类,例如LinkedList

简单地说,如果你使用接口List作为它的类型,你会说:"我想使用任何做这些事情的类来做我自己的事情",因为List是一个接口。但如果你只使用ArrayList,你会说:"我只想用这个特定的类来处理我的东西"。总之,它给了您更多的灵活性。

除此之外,使用超类作为类型或使用ArrayList或其他子类作为本身并没有太大区别。

希望这就是你所问的,并希望它有意义。如果没有,请随时提出任何问题。

最新更新