目的
・Javaのinterfaceのメリットと使い方を理解する
interfaceとは
メソッドの具体的な処理は記載せずに「変数」「メソッドの型」を明記したもの。
要約すると、
他のクラスで使用する変数とメソッドが明記されたファイル。
interfaceのメリット
・予め規格(ルール)を決めておけばその通りに作成することができ、保守性が上がり複数人での開発の際に実装が複雑化せずに済む。
・改修が発生した場合でも追加で改修を実装するだけで、大元の呼び出しクラスへの影響を抑えられる効果もありテストの工数を短縮することも可能。
・クラス間で疎結合の関係になる。
・インタフェース内で定義したメソッドを継承先で実装しないとエラーになるので実装漏れを防ぐことができる。
→そのため最初に必要なメソッドと引数を検討してインタフェース内に記述しておくといい。
複数人で開発をしていると必ずしも統一したプログラムを組んでいるとは限らず、クラスによっては戻り値や実装方法が異なるなんてことがあります。
そうなると改修が難しくなり汎用性が悪いコードが誕生します。
インタフェースで予め決めておけばインタフェースを継承することで戻り値が統一できるので呼び出し元は各クラスのメソッドを意識することなく実装できます。
また、改修が必要なときはインタフェースを継承して使うことができるので汎用性の高いコードになります。
interfaceの使い方
▼フォーマット
アクセス修飾子は必ず「public」。
他のクラスで継承して実装してもらうのでpublicにしないと参照できなくなってしまいます。
public interface インターフェース名{}
例)
①インタフェースを定義
public interface Caluculator {
int calc(int a, int b);
}
②インタフェースを継承
implements+インタフェース名で継承できる。
public class AddCalculator implements Caluculator{
@Override
public int calc(int a, int b) {
return a+b;
}
}
③mainメソッドから呼び出し
public class Application {
public static void main(String[] args) {
int a = 10;
int b = 20;
AddCalculator addCalc = new AddCalculator();
int result = addCalc2.calc(a, b);
System.out.println("result =" + result);
}
}
おわりに
インタフェースについて改めて理解を深めるにあたりまとめました。
しばらく実装から離れて開発をしていたので復習のために再確認しお取り込むことができました。
機能には必ず意味があるので再度振り返るいい機会になりました。