我观察过Java编程语言,我们的代码如下:
List mylist = new ArrayList();
为什么我们不应该使用以下而不是上面的?
ArrayList mylist = new ArrayList();
答案 0 :(得分:1)
虽然第二种选择是可行的,但在大多数情况下,第一种选择是可行的。通常,您希望对接口进行编码,以使代码更少耦合,更具凝聚力。这是一种数据抽象,其中mylist的用户(我建议使用myList),并不关心它的实际实现,只是它是一个列表。
答案 1 :(得分:1)
我们可能希望在某些时候更改基础数据结构,并且通过保留引用,我们只需要更改声明。
答案 2 :(得分:1)
Abstract Data Type
和specific implementation
的分离是object oriented programming的关键方面之一。
答案 3 :(得分:0)
如果使用ArrayList,则表示它必须是ArrayList,而不是任何其他类型的List,要替换它,您必须更改对该类型的每个引用。如果您使用List
,则表明List没有任何特殊之处,它被用作普通列表。只需更改一行即可将其更改为另一个列表。
答案 4 :(得分:0)
只是为了避免紧密耦合。从理论上讲,你应该永远不要将自己与实现细节联系起来,因为它们可能会改变,与接口契约相反,后者应该是稳定的。此外,它确实简化了测试。
您可以将界面视为总体合约,所有实施类必须遵守。相反,特定于实现的细节可能会有所不同,例如内部,访问等数据的表示方式 - 您不想依赖的信息。