【问题标题】:java interface and child class [duplicate]java接口和子类[重复]
【发布时间】:2015-03-28 20:59:10
【问题描述】:

我有下一个问题。我有接口

public interface MyInterface {
    blah blah
}

我有孩子:

public class MyChild implemets MyInterface {
    blah blah
}

有什么区别:

MyChild child = new MyChild();

MyInterface child = new MyChild();

?

【问题讨论】:

    标签: java oop inheritance interface


    【解决方案1】:

    您添加的代码 sn-p 是 -

    MyChild child = new MyChild();  
    

    MyInterface child = new MyChild();  
    

    在第一种情况下,child 只能包含 MyChild 类的对象。但在第二种情况下,child(其中 child 是MyInterface)可以包含实现MyInterface 的那些类的所有对象。在这里,您可以获得多态性的优势。

    【讨论】:

      【解决方案2】:

      当你这样做时:

      MyInterface child = new MyChild();
      

      您正在做所谓的“对接口进行编码”,它允许您遵守开放封闭原则:对扩展开放但对修改关闭。这允许您利用动态多态性。

      【讨论】:

      • 创建一个类的实例与开闭原则无关这是设计问题。
      • @tomse,当然是。不要试图找到不存在的问题。我不得不粘贴那部分帖子来说明哪个语句遵循编码到接口。它是一个对象创建语句的事实是由!
      • 好吧,也许我有点误解了你的意图,因为 open/closed 原则 不是类的用户应该关心的,而是类的创建者应确保其对接口的实现符合这一原则。所以对于这个问题,开放/封闭原则是不相关的,而且 IMO 更令人困惑而不是帮助......
      猜你喜欢
      • 1970-01-01
      • 2011-12-05
      • 2011-07-02
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 2018-06-29
      相关资源
      最近更新 更多