質問: なぜインタフェースを使うのか? カテゴリはjavaですが、オブジェクト指向という観点での質問です。 私はオブジェクト指向を勉強中です。(c#) そこで、疑問に思ったのがタイトルで示したインタフェースについてです。 以下に疑問を列挙します。 1.インタフェースはなぜ使うのですか? 2.使うメリットはなんですか? 3.インタフェースのインスタンスって作れるのですか? 4.インタフェースは必ずどこかのクラスに継承されないといけないのですか? 単体では何もできないのですか? 5.具体的な使い方を教えてください。 全部でなくてもよいのでわかる方ご教授よろしくお願いいたします。
回答: インタフェースは、クラス間の依存性を低めることができます。 言い換えると、インタフェースを使うと、実装クラスがなくてもインタフェースを使うクラスを作ることができます。 例 aaaクラスがbbbクラスを使うプログラムを作るとします。aaaクラスがbbbクラスを使うとは、たとえば void foo(bbb b)というメソッドがaaaクラスにあるということです。 また、bbbクラスには void bar(int i) 見たいなメソッドがあって、foo() から bar() を呼び出すことになるとします。 このとき、bbbがクラスである場合、aaaのソースコードをコンパイルするには、bbbクラスのコンパイルが終わっていなければなりません。 bbbクラスが複雑で、開発に時間がかかる場合はダミーのbbbクラスを作らなければなりません。 では、bbbをインタフェースにしたらどうでしょう。 bbbは void bar(int i)の宣言だけでいいのですぐ作れます。 aaaは、bbbインタフェースがあるのでコンパイルもできます。テスト用には bbbを実装した bbbstab スタブクラスでも作ればいいでしょう。 ダミークラスではないので、本物の実装クラスができたときに上書きする必要もありません。