2017-06-29 1 views

答えて

1

を使用することができます。たとえば、

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

このようにすれば、いつでも実装を簡単に変更できます。

注目すべき第2のポイントは、インターフェイス参照を使用することによって、インターフェイスで宣言された子クラスのメソッドだけを呼び出すことができることです。

インターフェイスで宣言されていないオーバーライドされたメソッドではない子クラスのメソッドを呼び出すことはできません。

0

Joshua Bloch's、Effective Javaより、可能であれば、インタフェースでオブジェクトを参照する方が良いと言います。これにより、プログラムの柔軟性が向上し、実装を切り替える必要がある場合は、コンストラクタのクラス名を変更するだけで済みます。実装を変更する理由は、パフォーマンスが向上したり、機能が追加される可能性があります。

// favorable 
List users = new Vector(); 

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

それのために存在しないインタフェースが存在しない場合、クラスの代わりにインターフェイスによってオブジェクトを参照するために完全に罰金です。

関連する問題