【はじめてのJava】インタフェースとは【インタフェース編】
はじめてのJava
このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。
インタフェース
今回の記事では、「インタフェース」という機能を解説していきます。
クラスの継承や抽象クラスなど、クラスに関する様々な機能がありますが、似た機能を持つ「インタフェース」という機能もあります。
目次
インタフェースとは
Javaでは、プログラムを実行する際に「オブジェクト」というものを利用することができました。
「オブジェクト」は、パラメーター(インスタンス変数)や処理(メソッド)をまとめたものでした。
プログラムの中でオブジェクトを作成する際には、クラスをもとに作成します。クラスに変数とメソッドを定義して、そのオブジェクトの動作を決めていきます。
クラスを作成するとき、クラスの基にする「抽象クラス」というものが存在しました。
「インタフェース」は、抽象クラスと似たような働きをするもので、「抽象メソッド」などが定義できます。
一般的には、公開されている操作をまとめたものというような形で説明されますが、具体的に説明すると、何らかのプログラムを作成するときに、決められた操作を行うためのメソッドがまとめて定義されているクラスのようなものです。
インタフェースを作成しておくことで、開発の途中でクラスを作成する際に、同じ動作をする処理がいくつも出てきても、共通のインタフェースを利用することができます。
そのようにしておくことで、クラスは違っても、同じインタフェースを利用しているクラスなら、同じメソッドの呼び出しでそれぞれの動作をすることができるということになります。
インタフェースとクラスの違い
クラスと違う点は、クラスが変数やメソッドを定義してオブジェクトの特性を表しているものであることに対して、インタフェースは、ただの部品としてメソッドや変数を定義するだけという点です。
クラスのように継承して特性を受け継がせて利用するのではなく、そのクラスの中で定義したいメソッドの大枠部分を部品として提供するようなイメージになります。
インタフェースはクラスを作成する際に、「実装する」ことで利用することができ、実装したクラスの中でインタフェースに定義されている抽象メソッドをオーバーライドして、そのメソッドの処理を定義します。
インタフェースを定義しておくことで、複数のクラスで同じメソッドや変数を使用することができるというメリットがあります。
例えば、「run(走る)」という機能を持ったクラスをいくつか作成するとします。
クラスを継承して作成する際に、「run」メソッドを持った元クラスを継承して作成することになりますが、クラスにはメソッドだけではなく様々な変数なども定義されています。
つまり、関係のないクラスを継承してサブクラスを作成することは定義上、おかしいことになります。
インタフェースはメソッドを「部品」のような形で定義しており、クラスのように何かの特性を表す意味は強くありません。
そのため、全く特性の異なるクラスの定義をする際にも、共通のインタフェースを利用してクラスを作成することができます。
インタフェース編・次回の内容
今回はインタフェースの概要について紹介しました。
次回は、インタフェースを定義する方法と使い方を解説していきます。
初めてのJavaシリーズの目次はこちら
インタフェース編の記事一覧はこちら