【问题标题】:Why do we use interface reference to a child object? [duplicate]为什么我们使用对子对象的接口引用? [复制]
【发布时间】:2017-06-29 12:16:03
【问题描述】:

为什么我们要对子对象使用接口引用?

例如:

Map m = new HashMap(); 

为什么?

我们可以使用

HashMap hm = new HashMap();

【问题讨论】:

    标签: java


    【解决方案1】:

    您可以稍后将其更改为其他类的对象。例如,

    Map m = new HashMap();
    m = new TreeMap();
    

    这样您可以随时轻松更改实现。

    需要注意的第二点是,使用接口引用只能调用接口中声明的子类的那些方法。

    您将无法调用未在接口中声明的子类的那些方法,因此它们不是被覆盖的方法。

    【讨论】:

      【解决方案2】:

      在 Joshua Bloch 的 Effective Java 中,他说如果可能的话,最好通过对象的接口来引用对象。这将为您的程序提供更大的灵活性,如果您决定要切换实现,您需要做的就是更改构造函数中的类名。更改实现的原因可能是更好的性能或额外的功能。

      // favorable
      List users = new Vector();
      
      // dont do this if possible
      Vector users = new Vector();
      

      如果没有接口存在,则按类而不是接口来引用对象是完全可以的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-17
        • 2015-03-19
        • 1970-01-01
        • 1970-01-01
        • 2013-06-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多