インターフェース

インターフェースクラスはわかりにくい。

<使う理由>

クラスがクラスを使うときに、双方ができるだけ修正したりしないようにする。
ある処理がテーブルにデータを入れ、別の処理がそれを取得する場合、テーブルの定義
さえ決めていればそれぞれ独立して作れる、というイメージ。
テーブル定義がインターフェースクラス、実際のレコードがそれをインプリメントimplementsしたクラス。レコードを取りたい処理はテーブル定義に対して処理を書けばよい。

<サンプル>

★インターフェースクラス
public interface tesuryo{

/* 手数料を返すメソッドの宣言のみ*/
public int getTesuryo();

}

★実装クラス
public class tesuryoImpl implements tesuryo{

/*implementsしたインターフェースと同じメソッドを作らないといけない*/
public int getTesuryo(){

/*\50を返す*/
return 50;
}
}

★使うほうのクラス

public class testjikko{
 
public static void main(String args){
...省略
 /*インターフェースクラスで、実装クラスのオブジェクトを受けれる*/
tesuryo ts = new tesuryoImple();
/* ここでは\50返ってくる*/
ts.getTesuryo();
}
}

\100返すクラスも作るとき、
また例のインターフェースをインプリメントして作る。

★実装クラス
public class tesuryoImpl100 implements tesuryo{

public int getTesuryo(){

/*\50を返す*/
return 100;
}
}

★使うほう

public class testjikko{
 
public static void main(String args){
...省略
 /*インターフェースクラスで、実装クラスのオブジェクトを受けれる*/
tesuryo ts = new tesuryoImple();
/* ここでは\50返ってくる*/
ts.getTesuryo();

 /*別のimplementsしたクラスを突っ込むと、、*/
 tesuryo ts = new tesuryoImple100();
/* ここでは\100返ってくる*/
ts.getTesuryo();
}
}

newするときはそれぞれのクラスを入れなければいけないが、
メソッドの呼出し部分は同じでよい。

これを応用すれば、メソッドを呼ぶ部分は共通でまとめることが
できる。