【Java入門】インターフェース(interface)について – 多重実装はOKです

Java入門のinterface(implements)について解説Java入門
スポンサーリンク

こんにちは。いつもブログをご覧いただきありがとうございます。

今回は Javaプログラミングのインターフェース(interface)について解説します。

インターフェース(interface)のメリットってなんだっけ?使い方もイマイチわかってない・・・。継承(extends)との違いは何!?

そんな悩みや疑問を持った人は多いのではないでしょうか。そういった方に向けて記事を書きました(^^♪

IT系フリーランス専門エージェントサービス第1位のMidWorksは業界トップクラスの低マージンで多くのエンジニアから選ばれています!!

インターフェース(interface)のメリット

インターフェース(interface)のメリットはずばりコレ↓

インターフェースは機能実現のための約束ごとを定めたもの

インターフェース(interface)では、フィールドや処理の中身を持たないメソッドを定めることができます。

インターフェースの特徴はクラスを作成するときにあります。

例えば、以下のような場合があるとします。

インターフェースの実装前

ユーザー登録画面と投稿登録画面を作成するとします。

ユーザー登録画面はクラスAとして作成。一方の投稿登録画面はクラスBとして作成。

クラスAクラスBともに以下の2つの機能を必ず実装することとします。

  • addメソッド – 追加処理
  • removeメソッド – 削除処理

追加処理 又は 削除処理を1つだけ機能を実装した場合、ルール違反とする。

というような場合、インターフェース(interface)の出番です。

インターフェースの特徴

インターフェースXを作成し、クラスA・クラスBでそれを呼び出してあげれば良いのです。

このクラスAやクラスBがインターフェースを呼び出すことを実装(implements)と言います。

インターフェース(interface)の実装方法

では、具体的にインターフェースを作成し、それをクラスで実装する方法をやっていきますね。

インターフェース(interface)の使い方

  1. インターフェースファイルを作成する
  2. クラスを作成し、1で作成したインターフェースを呼び出す(実装する)

まず、【1.インターフェースファイルを作成する】です。

インターフェースファイルを作成

変数「msg」とadd・removeメソッドを持ったインターフェースファイルを作成してみましょう。

public interface X {
  String msg = "メッセージ出力";
  void add();
  void remove();
}

通常のメソッドの書き方とは違いますよね。

インターフェースは機能実現のための約束ごとを定めたもの

そうですね。メソッドの中身は書かず、メソッド名だけを定義するだけです。

実装の呼び出し方法(implements)

次は、【2.クラスを作成し、1で作成したインターフェースを呼び出す(実装する)】です。

クラスを作成し、インターフェースを実装
public class A implements X {

  @Override
  public void add() {
    // TODO
  }

  @Override
  public void remove() {
    // TODO
  }
}

注目して欲しいところはこの部分 ⇒ public class AimplementsX

インターフェースを実装する場合は【implements】キーワードを使用します。

基本的に呼び出し方法はコレだけです。

あとは、Xインターフェースで定義していたadd・removeメソッドを呼び出すだけです。

インターフェースの実装方法

多重実装が可能

インターフェース(interface)は継承とは異なり、多重実装が可能です。

継承(extends)について、以下の記事でも解説していますので合わせてどうぞ

つまり、以下のように複数インターフェースを実装することが可能なのです。

複数のインターフェースを実装

上図の場合、インターフェースX・Yの2つをクラスAを実装していることが分かります。

これをJavaプログラミングで書くとこのようになります。

public class A implements X, Y {

  @Override
  public void add() {
    // TODO Auto-generated method stub
  }

  @Override
  public void remove() {
    // TODO Auto-generated method stub
  }

  @Override
  public void set() {
    // TODO Auto-generated method stub
  }

  @Override
  public void get() {
    // TODO Auto-generated method stub
  }

}

複数のインターフェースを実装する場合は【implements】キーワードの後にカンマ(,)区切りで指定します。

public class A implements X, Y

実装と継承を同時に使う場合

また、【継承】と【インターフェース】を同時に定義することが可能です。

Javaプログラミングで書くとこのようになります。

public class A extends B implements X {

  @Override
  public void add() {
    // TODO
  }

  @Override
  public void remove() {
    // TODO
  }
}

【継承】と【インターフェース】を同時に定義する場合は、必ず【継承】から先に書いてくださいね。じゃないと構文エラーとなってしまいます( ゚Д゚)

public class A extends B implements X

実装したらoverrideも忘れずに

あと、最後にインターフェースを実装したらoverride属性の記述を忘れないでくださいね。override属性は書かなくても構文エラーにはなりませんが、ソースコードの可読性のために必要です。

ちなみに、@で始まる注記のことをアノテーションと言います。

@Override属性はソースコードの可読性のために必要

まとめ

本記事はインターフェースについて実装方法や注意点について解説を行いました。

最後にもう一度確認していきましょう!

  • インターフェースは機能実現のための約束ごとを定めたもの
  • 実装する場合は【implements】を使用する
  • 多重実装する場合は【implements】の後にカンマ(,)区切りで指定
  • 【継承】と【インターフェース】を同時に定義することが可能
  • @Override属性はソースコードの可読性のために必要

以上、インターフェースを実装する際の5つのポイントです。

新しい機能(クラス)を作成する時、インターフェースの概念はとても重要です。良いクラス設計・開発には欠かせないので、しっかりマスターしていきましょう!(^^♪

最後まで読んでいただきありがとうございました。

IT系フリーランス専門エージェントサービス第1位のMidWorksは業界トップクラスの低マージンで多くのエンジニアから選ばれています!!

Javaスキルで悩んでいる方必見!本気で学習できる環境を探してみよう!
詳細はこちら
Javaスキルで悩んでいる方必見!本気で学習できる環境を探してみよう!
詳細はこちら
タイトルとURLをコピーしました