2017-12-03 4 views
-4

私は次のコードを理解しようとしていて、少し混乱しています。いくつかのグーグルの後、私はOOPでAnonymus Classesを見つけました。しかし、なぜこのコードでオブジェクトのソートを宣言し、MergeSortのインスタンスをsorting = new MergeSort();と呼んでいるのか理解できませんか?誰かが私に説明することはできますか?どうすれば可能ですか?Javaでインタフェースのインスタンスを作成しますか?

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 
} 
+0

この質問は何度も尋ねられています.. – user3437460

答えて

0

MergeSortSorting実装ですので。

あなたは使用するインプリメンテーションを変更するのは簡単ですが、インターフェースの仕様のみを使用することができます。このため、インターフェイスのみを処理するのがよい方法です。

Oraclesのドキュメントのthis chapterも参照してください。

0

QuickSort()のコードには、ソートインターフェイスが実装されているため、Sorting objectが使用されています。インターフェイスを直接使用することはできませんオブジェクトを作成するインターフェイスの参照のみを使用することができます。

関連する問題