「Java言語」の「インターフェース」の仕組みと作り方
今回は「インターフェース」について学んでいきたいと思います。
「抽象クラス」がまだ何となくな理解なので、このまま先に進んでもいいのか不安なところもありますが、「インターフェース」の学習へ進んでいきます。
ここまでである程度「Javaの基本」は学んできた気がしているのですが、何を作ろうか悩んでいたりします。
まずはきちんと「Javaの基本」を理解していかないと(^^;)
インターフェース
さまざまなクラスに「機能の差し込みができる機能」が「インターフェース」なのですが、「継承関係」とは別の仕組みのため、自由にクラスの機能を追加することができます。
「インターフェース」は、
interface インターフェース名 { //メソッドの実装 }
のように作っていきます。
プログラムの作成
「抽象クラス」でも出てきた「ゲームマシンクラス」をテーマに、今回もクラスを作ってみたいと思います。
「インターフェース」は、
public interface vr { public default void playVRGame() { System.out.println("VRで●●ゲームを遊びます"); } }
「ゲームマシン」に「VR」で遊ぶことができる機能を追加する「VRインターフェース」を作りました。
この「インターフェース」の中に「VR」で遊ぶための「playVRGame」メソッドが作られています。
今までのメソッドと異なるのは「default」キーワードが追加されている部分です。
このキーワードを追加することで、「インターフェース」をクラスに実装するだけで、「playVRGame」メソッドを実行することができます。
「インターフェース」は「implements」キーワードで実装を行います。
例えば、
public class クラス名 extends スーパークラス implements インターフェース{ //フィールド・メソッド }
のようになります。
「ゲームマシン」のクラスで実装を行ってみると、
public class NewGameMachineA extends GameMachine implements vr{ //「GameMachineクラス」の「抽象メソッド」の内容を実装 public void playGame() { System.out.println("4Kで●●のゲームを遊びます。"); } }
のようになります。
「main」メソッドを
public class Main { public static void main(String[] args) { NewGameMachineA ngmA = new NewGameMachineA(); ngmA.playVRGame(); } }
のように作って実行してみると、
VRで●●ゲームを遊びます
のように画面に出力されます。
この仕組みもまだ納得できるほど理解は進んでいませんが、「継承関係」と切り離して使えるところが便利だなと思います。
どういうケースでどのように利用されているのかについてこれからも学習していきたいと思います。