• 締切済み

インターフェースの利点は?

choconamacreamの回答

回答No.6

概念的な事に関しては、もう一通り出揃ったと思いますので、私の方からも同じく具体例でいきます。 >インターフェースでしかできないことはあるのでしょうか? イベントハンドラ >インターフェースはどのような場面で活用するのが有効なのでしょうか? 抽象化や再利用性を高めたい時。 Swingプログラミングを行っていく上での便利な機能の一つに、「イベントハンドラ」というのがあります。(J2MEにて有名なiアプリやMIDletなどでも、基本的には同じです。)実際には、J2SEにてイベントハンドラを実現するためには、以下のような手順となります。 (1)イベントハンドラが行われるクラスにてActionListenerインターフェースを実装する。 (2)各コンポーネントクラスのインスタンスに、addActionListenerメソッドを使用してアクションリスナーを設定する。 (3)actionPerformedメソッドをオーバーライドして、実際にイベントが発生した時に行われる処理を実装する。 詳細なプログラムが見たい方は、以下のサイト内の赤文字の部分などを参考にしてください。 JavaでHello World > Swing(イベント)編 http://www.hellohiro.com/swingevent.htm ここで重要な事は、オーバーライドされたactionPerformedメソッドの中身が、各々のJavaアプリケーションによって違うという事です。例えば、  public void actionPerformed(ActionEvent event){   if( /* getSource()の戻り値の内容が、あるコンポーネントクラスAのインスタンスと同じ時 */ )){    // イベントハンドラクラスAにおいて、処理される内容をここに記述。   }else if( /* getSource()の戻り値の内容が、別のコンポーネントクラスBのインスタンスと同じ時 */ ){    // イベントハンドラクラスBにおいて、処理される内容をここに記述。   }  } というようになっているかもしれませんし、はたまた  public void actionPerformed(ActionEvent event){   if( /* getSource()の戻り値の内容が、あるコンポーネントクラスCのインスタンスと同じ時 */ )){    // イベントハンドラクラスAにおいて、処理される内容をここに記述。   }  } というようになっているかもしれません。実際には、Sun Microsystems, Inc.の人達にとっても、どのようなイベントが発生し(Buttonを押したりとか、ComboBoxのいずれかを選択したりとか・・)、その事によってどういったような処理を行うのかなどについては、知ったこっちゃないわけですよ(業務レベルによれば仕様だったりとか、社外秘に絡んできたりすることなので)。ただ、「とりあえず、大元の枠組みに関しては用意しておきましたので、後は担当されているJavaプログラマーさん、詳細な実装の方をよろしくお願いします。」って事なんですよ。 これが、他の回答者さんも述べられていた「宣言と実装を分離」ということなんですね。

参考URL:
http://www.techscore.com/tech/J2SE/UI/3.html

関連するQ&A

  • メソッドの戻り値をインターフェースとする利点ってなんでしょうか?

    メソッドの戻り値をインターフェースとする利点ってなんでしょうか? サードパーティ製のライブラリなどでよく見かけますが 具体的にどういう利点があるのでしょうか?

  • インターフェイスの使い方がわかりません(初心者です)

    Javaを始めたばかりの初心者です。 「やさしいJava」を買って一通り学んだのですが、 インターフェイスの使い方がよくわからず、困っています。 インターフェイスを実装することでインターフェイスが持つメソッドがすべて定義されてることが保障される、 というのはわかるんですが、そのことがどうして有用なのでしょう? また、具体的にはスレッドを扱うときにRunnableインターフェイスを実装する理由がわかりません。 Threadクラスのオブジェクトを作成するときに、 Runnableを実装したクラスのオブジェクトの変数を 引数にしないといけないんですよね? このとき、Runnableインターフェイスが 「runメソッドが定義されていなければならない」 とだけいうものだったとしたら、 Runnableを実装してなくてもrunメソッドさえ定義してあれば 実行できそうな気がするんですが・・・

    • ベストアンサー
    • Java
  • interface

    javaを勉強中ですが、interfaceで分からなくなっています。 いったいこれは、どのような状況でつかうのでしょうか。 どういった利点があるのか分かりません。 interfaceを宣言しないで必要なときに実装するのではなにか不都合があるのでしょうか。 よろしくご教授下さい。

    • ベストアンサー
    • Java
  • Observerインターフェイスについて

    Javaを勉強中の者です。宜しくお願いします。 JavaのAPIの中で、Observerはインタフェースとなっています。Observerが普通のクラスではなくてインターフェイスとなっているのはなぜなのでしょうか? インターフェイスだと、複数の継承が可能になるからでしょうか?でももしそうなら、あるクラスAがObserverだけを継承している場合は、複数継承ではないので、Observerをインターフェイスにする必要がなくなりますよね。。という事は、他にもこのObserverをインターフェイスにする利点(理由)があるのでしょうか? どなたかご教授をお願いします。 Observerについては、下記のサイトを参考にしました(http://www.fuka.info.waseda.ac.jp/~washi/m_html/node12.html#observer)

    • ベストアンサー
    • Java
  • インターフェースについて

    いまサーブレットをやっています。 Java言語仕様では、 「インターフェースの定義には、メソッドの定義を書いてはいけない」 (メソッドの定義はそのインターフェースをimplementsしたクラスのなかで オーバーライドする) ということになってますよね? …でも、 APIリファレンスを読むと、 インターフェースHttpServletRequestのメソッドgetParameterには、 「リクエストパラメータの値をString型として返す」と書かれています。 ↑これって上記のJava言語仕様と矛盾してませんか? まるでどこかでgetParameterメソッドの定義がなされているかのようです。 これってどういうことでしょう? 考えれば考えるほど、訳わかりません。とっても混乱中です(-_-)

    • ベストアンサー
    • Java
  • インターフェイスと抽象クラス

    なかなか理解が難しくて苦しんでいます。 で自分なりに理解したのですが、 抽象クラス→内容に決まっているメソッドと決まっていないメソッドがある場合に決まっていないメソッドを あとからオーバーライドするだけでスーパークラスで定義したすべてのメソッドを利用できる。 これでただしいでしょうか? で、インターフェイスなのですが、この抽象クラスとそっくりなんですが、 (1)変数は定数になる(強制static)(2)メソッドは名前のみの宣言(内容は記述できない) と言うことで、かなり???なのです。 何のために・・・???記述するんでしょうか?? ただひとつメリットがあるとしたら、インターフェイスを実装すると、インターフェイスの配列でインスタンスを 生成出来るということぐらいでしょうか。 そこでちょっとお門違いの疑問かもしれないんですが、 Runnable、やMouselistenerはメソッドの内容が書かれていないのに、 なぜ機能を持たせることが出来るのでしょう??? 認識違い、間違い等ありましたら、教えてください よろしくお願いいたします。

    • ベストアンサー
    • Java
  • インターフェース

    インターフェースについて学ぼうと思っているのですが、 どうもいまいち何がなんだかわからなくなっています。 インターフェースはクラスによって実装され、 実装クラスはインターフェースで宣言されている 抽象メソッドを実行する とあるのですが、実装とは何ですか? 抽象メソッドとは何ですか?

    • ベストアンサー
    • Java
  • インターフェースの使い方。

    javaを勉強している者です。あるコードを読んでいるのですが、そのなかでインターフェースで宣言しているインターフェース(日本語変な気がしますが)を別のクラスで、クラスみたいに宣言しているようなコードがあるのですが、それは文法的に大丈夫なのでしょうか?具体的には public interface MailStore{//いくつかのメソッドなど} というのがMailStore.javaで書かれていて別のMain.javaというコードの中で priate static MailStore _mailStore; public static MailStore getMailStore(){return _mailStore;} という2行がこの中で書かれています。 よろしくお願いします。 (ちなみにコードは「EclipseによるJava実用プログラミング」という本によるものです。下記のURLからダウンロード可能で、mailというディレクトリの中のコードです) https://products.locus.co.jp/index.php3​

    • ベストアンサー
    • Java
  • Java - インターフェース

    Java初心者です。 インターフェースの勉強中なのですが、いまいちインターフェースの利点、意味が良くわかりません。1つのクラスに複数のインターフェースが使えるとのことですが、普通にクラスに組み込んではダメなのでしょうか? わかりやすく説明してもらえると助かります。

  • interface,extend,implementのちがい

    お世話になります、 Javaを勉強しているのですが、 interface,extend,implementの使い分けがわかりません。 私の解釈としては、 (1)interfaceは、グローバル変数の定義、グローバルメソッドの定義(実装はしない)。 (2)extendは、extendクラスを親クラスとして親クラスの機能を使用できる。 (3)implementは…,implementもextendと同じような意味だと解釈しているんですが、違う点は、implementで定義してあるメソッドは、使用しなくても、実装しなければならないという点でしょうか? とにかくこの3つのを使い分けるコツとかあれば教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java