【问题标题】:How can it be possible Creating instance of interface in Java? [duplicate]如何在 Java 中创建接口实例? [复制]
【发布时间】:2017-12-03 12:12:39
【问题描述】:

我正在尝试理解以下代码并且有点困惑。经过一番谷歌搜索,我在 OOP 中找到了 Anonymus Classes。但是无法理解为什么在这段代码中他们声明了 Sorting 对象并使用 sorting = new MergeSort(); 调用 MergeSort 的实例?谁能给我解释一下?

interface Sorting {
   List sort(List list);
}
class MergeSort implements Sorting {
    public List sort(List list) {
// sort implementation
        return list;
    }
}
class QuickSort implements Sorting {
    public List sort(List list) {
// sort implementation
        return list;
    }
}
class DynamicDataSet {
    Sorting sorting;
    public DynamicDataSet() {
        sorting = new MergeSort();
    }
// DynamicDataSet implementation
}
class SnapshotDataSet {
    Sorting sorting;
    public SnapshotDataSet() {
        sorting = new QuickSort();
    }
// SnapshotDataSet implementation
}

【问题讨论】:

  • 这个问题已经被问过很多次了..

标签: java


【解决方案1】:

在您的代码中,Sorting object 用于引用MergeSort()QuickSort(),因为它们已经实现了排序接口。接口不能直接用于创建Object,只能使用接口的引用。

【讨论】:

    【解决方案2】:

    因为MergeSort Sorting 实现。

    那为什么您只能使用接口指定的内容,但更改您想要使用的实现会更容易。这就是为什么只处理接口是一个好习惯的原因。

    另请参阅 Oracles 文档的 this chapter

    【讨论】:

      猜你喜欢
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 2019-01-03
      • 1970-01-01
      相关资源
      最近更新 更多