whichのブログ ~プログラミング体験記~ -19ページ目

whichのブログ ~プログラミング体験記~

主にJava,vVsual C#,Andoroid,SQLについて
覚え基本た文法やプログラミング技法、各クラスの利用法を
忘れないように形にしたものです

初心者だとかプロだとか特に意識せず利用してもらえるとうれしいです。

前回の抽象クラスを利用したポリモルフィズムは継承を利用することで初めて成立する技法である。

つまり見方を変えると・・・スレッドやGUI部品クラスなど、Java APIパッケージのクラスを継承するときは利用できない。

しかしポリモルフィズムを利用するだけなら少なくとも、「抽象メソッド」だけあれば成立する

そこでこれを解決するために

オブジェクト指向技法の一つ『実装 ーインタフェイスー 』を紹介する

■基本構成

/*インタフェイス側*/
アクセス修飾子  interface インタフェイス名{
      
     抽象メソッド


/*実装クラス側*/

アクセス修飾子 class クラス名 implements インタフェイス名{
    /*省略*/


インタフェイスの「interface」というのはインタフェイスを表す修飾子です

■特徴
実際に記述する方法は継承と大体似ていますが以下の制約がありインタフェイスの魅力ともいえます

  • アクセス修飾子は必ず「public」 ・・・クラスではないためどのクラスにも実装できるようにするため
  • フィールド変数は定数       ・・・基本はメソッドのみの記述だがインタフェイスは実装クラスの処理群なので定数としてのみ宣言可能
  • メソッドは抽象メソッド        ・・・インタフェイスはメソッド集まりで処理を増設するイメージであり振る舞いは必要ないから
  • 実装クラスではインタフェイス内のメソッドをすべて記述しなければならない(ここが抽象クラスとに違いです!!)
  • クラスと同じでインタフェイスもインタフェイス間で継承関係を持つことができる。
  • インタフェイスの多重継承ができる(インスタンスが存在しないため)
  • 複数のインタフェイスを実装可能

  • 抽象クラスの場合、多重継承ができない時点で実装できる抽象メソッドはクラス内に限定される。
    インタフェイスの場合、複数実装することで実装するメソッドの組合せにより実現できる処理の可能性が広がるがすべて実装する観点から複数実装しすぎると必要ない抽象メソッドも記述しなければならない欠点がある

    どちらが抽象メソッドのり利用として便利かは判断できないところだがインタフェイスは配列宣言が可能なことから汎用性が高い
    またJavaAPIの中にはインタフェイスがおおくてGUI処理で必須スキルなので、使い方だけは理解してほしい(java.awt.Eventパッケージが中心)

    APIのインタフェイスは2~4メソッドがほとんどであり実装のパターンもあるていど確立しており複数実装することがほとんどないため実装も基本に忠実にといった感じ。

    作成に関しては抽象メソッド2つ程度を目安にしたほうがよい

    ■サンプル
    前回のポリモルフィズムの抽象クラスをインタフェイスに変更して実行結果が同じになれば実装完了です


    前回のサンプルコード