こんにちは。いつもブログをご覧いただきありがとうございます。
今回は Javaプログラミングのインターフェース(interface)について解説します。

インターフェース(interface)のメリットってなんだっけ?使い方もイマイチわかってない・・・。継承(extends)との違いは何!?
そんな悩みや疑問を持った人は多いのではないでしょうか。そういった方に向けて記事を書きました(^^♪
インターフェース(interface)のメリット
インターフェース(interface)のメリットはずばりコレ↓
インターフェースは機能実現のための約束ごとを定めたもの
インターフェース(interface)では、フィールドや処理の中身を持たないメソッドを定めることができます。
インターフェースの特徴はクラスを作成するときにあります。
例えば、以下のような場合があるとします。

ユーザー登録画面と投稿登録画面を作成するとします。
ユーザー登録画面はクラスAとして作成。一方の投稿登録画面はクラスBとして作成。
クラスA・クラスBともに以下の2つの機能を必ず実装することとします。
- addメソッド – 追加処理
- removeメソッド – 削除処理
追加処理 又は 削除処理を1つだけ機能を実装した場合、ルール違反とする。
というような場合、インターフェース(interface)の出番です。

インターフェースXを作成し、クラスA・クラスBでそれを呼び出してあげれば良いのです。
このクラスAやクラスBがインターフェースを呼び出すことを実装(implements)と言います。
インターフェース(interface)の実装方法
では、具体的にインターフェースを作成し、それをクラスで実装する方法をやっていきますね。
インターフェース(interface)の使い方
- インターフェースファイルを作成する
- クラスを作成し、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)は継承とは異なり、多重実装が可能です。
つまり、以下のように複数インターフェースを実装することが可能なのです。

上図の場合、インターフェース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】キーワードの後にカンマ(,)区切りで指定します。
実装と継承を同時に使う場合
また、【継承】と【インターフェース】を同時に定義することが可能です。
Javaプログラミングで書くとこのようになります。
public class A extends B implements X {
@Override
public void add() {
// TODO
}
@Override
public void remove() {
// TODO
}
}
【継承】と【インターフェース】を同時に定義する場合は、必ず【継承】から先に書いてくださいね。じゃないと構文エラーとなってしまいます( ゚Д゚)
実装したらoverrideも忘れずに
あと、最後にインターフェースを実装したらoverride属性の記述を忘れないでくださいね。override属性は書かなくても構文エラーにはなりませんが、ソースコードの可読性のために必要です。
ちなみに、@で始まる注記のことをアノテーションと言います。
まとめ
本記事はインターフェースについて実装方法や注意点について解説を行いました。
最後にもう一度確認していきましょう!
- インターフェースは機能実現のための約束ごとを定めたもの
- 実装する場合は【implements】を使用する
- 多重実装する場合は【implements】の後にカンマ(,)区切りで指定
- 【継承】と【インターフェース】を同時に定義することが可能
- @Override属性はソースコードの可読性のために必要
以上、インターフェースを実装する際の5つのポイントです。
新しい機能(クラス)を作成する時、インターフェースの概念はとても重要です。良いクラス設計・開発には欠かせないので、しっかりマスターしていきましょう!(^^♪
最後まで読んでいただきありがとうございました。