多くの場合、インターフェイス型には実際の実装よりも少ないメソッドが含まれており、それらにアクセスできるため、後者を使用したくなります。
ただし、これにより、かなりの方法で手を結ぶことができます。たとえばVector
、ベクトルを使用するクラスのパブリック メソッドからの戻り値の型を公開することに決めたが、後でモジュールが を使用した方が適切であることに気付いたLinkedList
場合、いくつかの問題が発生します。ベクトルを返すメソッド。
一方、最初に戻り値の型を使用していた場合はList
問題ありません。内部の Vector を LinkedList に切り替えるか、インターフェイス List を満たす独自のものを実装できます。私の経験では、これはよくあることです (もちろん、それを難しくしたり不可能にしたりすれば、起こりにくくなります)。
そのため、特別な理由がない限り(ベクトルでのみ使用可能なメソッドへのアクセスを提供する必要がある場合など)、戻り値には常にジェネリック インターフェイス型を使用してください。
これはまだ柔軟性に関するものであることは理解していますが、それがどれほど重要かを理解しているかどうかは、あなたの投稿からは明らかではありません. インターフェースを使用するより良い理由を求めている場合、つまり. 「柔軟性を気にしないのであれば、特定の実装を使用しても大丈夫ですか」、つまり。「柔軟性は気にせず、特定の型を使いたいのですが大丈夫ですか?」答えは、柔軟性を気にする必要があるということです;) 他の人が言ったように、これは優れた Java プログラミングの重要な基本です。