21
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【図解で理解】Javaのinterfaceのメリットと使い方について

Last updated at Posted at 2021-11-12

目的

・Javaのinterfaceのメリットと使い方を理解する

interfaceとは

メソッドの具体的な処理は記載せずに「変数」「メソッドの型」を明記したもの。

要約すると、
他のクラスで使用する変数とメソッドが明記されたファイル。

interfaceのメリット

・予め規格(ルール)を決めておけばその通りに作成することができ、保守性が上がり複数人での開発の際に実装が複雑化せずに済む。

・改修が発生した場合でも追加で改修を実装するだけで、大元の呼び出しクラスへの影響を抑えられる効果もありテストの工数を短縮することも可能。

・クラス間で疎結合の関係になる。

・インタフェース内で定義したメソッドを継承先で実装しないとエラーになるので実装漏れを防ぐことができる。
 →そのため最初に必要なメソッドと引数を検討してインタフェース内に記述しておくといい。


▼インタフェースがない世界
インタフェースがない世界.jpg

複数人で開発をしていると必ずしも統一したプログラムを組んでいるとは限らず、クラスによっては戻り値や実装方法が異なるなんてことがあります。
そうなると改修が難しくなり汎用性が悪いコードが誕生します。


▼インタフェースがある世界
インタフェースがある世界.jpg

インタフェースで予め決めておけばインタフェースを継承することで戻り値が統一できるので呼び出し元は各クラスのメソッドを意識することなく実装できます。
また、改修が必要なときはインタフェースを継承して使うことができるので汎用性の高いコードになります。

interfaceの使い方

▼フォーマット アクセス修飾子は必ず「public」。 他のクラスで継承して実装してもらうのでpublicにしないと参照できなくなってしまいます。
public interface インターフェース名{}

例)
①インタフェースを定義

Caluculator.Java
public interface Caluculator {
	int calc(int a, int b);
}

②インタフェースを継承
implements+インタフェース名で継承できる。

AddCalculator.Java
public class AddCalculator implements Caluculator{
	@Override
	public int calc(int a, int b) {
		return a+b;
	}
}

③mainメソッドから呼び出し

Application.java

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);
	}
}

おわりに

インタフェースについて改めて理解を深めるにあたりまとめました。 しばらく実装から離れて開発をしていたので復習のために再確認しお取り込むことができました。 機能には必ず意味があるので再度振り返るいい機会になりました。
21
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?