使用其基类实例化派生类有什么好处? Java的

时间:2012-08-18 16:37:42

标签: java class instantiation

  

可能重复:
  Why are variables declared with their interface name in Java?
  How should lists be cast to their conrecte implementations?

示例:

Map<Integer, Integer> map = new HashMap<Integer, Integer>();

感谢。

4 个答案:

答案 0 :(得分:3)

这通常是为了您以后可以交换另一个实现,但仍然可以使代码运行相同。例如,如果您决定使用TreeMap而不是HashMap,则可以更改实例化步骤,其余代码仍然可以正常工作。

答案 1 :(得分:3)

这是一种名为programming to an interface的编程实践。

答案 2 :(得分:1)

您可以切换实现(例如在您的示例中切换到TreeMap)而不影响其余代码,因为它将使用基类,即Map。 它解耦你的代码,并被认为是一个很好的编程实践来编码接口而不是具体的实现

答案 3 :(得分:1)

Design by Contract或“编程到接口”是确保代码仅使用接口公开的属性/方法的原则,更重要的是,在任何给定时间使用一个主接口。如果您一次使用多个接口,这通常是更紧密耦合的标志。

通常,您不应直接在代码中实例化对象。您应该将该作业委派给外部实体,以便可以在一个地方完成所使用的实现的任何更改。

有一篇Dobb博士的日记文章说,应该禁止使用'new'关键字(确切的标题就像'new is verboten'),但我现在找不到它的链接。

相关问题