インターフェースとは

 オブジェクト指向プログラミング言語を学んでいると様々な部品が登場します。オブジェクト指向とは複数の部品(オブジェクト)を組み合わせて1つのプログラムを作ることであり、僕が学んでいる「Ruby」も「Java」もオブジェクト指向プログラミング言語となります。

 「Java」を学ぶ上では、「クラス」、「メソッド」、「フィールド」、「インスタンス」、「ポリモーフィズム」、「インターフェース」といった部品がそれぞれどういう役割を果たすのかを理解する必要があるでしょう。

 今回はその中でも「インターフェース」について整理しておきます。整理するにあたって、下記の書籍を参考にしました。

 

石井真、株式会社カサレアル『いちばんやさしいJavaの教本』(株式会社インプレス、2020年)

 

辞書的な意味

 まずこの「インターフェース」の辞書的な意味を調べると、「接合部分」、「仲立ち」、「橋渡し」と言ったワードが出てきました。オブジェクト指向プログラミング言語の中でも、何かしらの「橋渡し」をする役割を持つ用語なのかもしれませんね。

 

ポリモーフィズム

 そしてこのインターフェースという仕組みは、ポリモーフィズムという考え方に基づきます。ポリモーフィズムとは「多態性」という意味であり、似たようなクラスを統一的に扱えるようにする考え方のことです。

 

インターフェースとは

 インターフェースは割と抽象的なものを定義するための部品です。もしAppleクラスとOrangeクラスとStrawberryクラスがあるとするなら、Fruitsを定義するものがインターフェースです。それくらいの抽象度の高さということです。

 

クラスと似ている

 このインターフェースはメソッドを定義することができます。またインターフェース型の変数を作ることも可能であり、その変数からメソッドも呼び出せます。そう言った点からクラスに似ていると言えます。

 

クラスとの違い

 しかしながら、インターフェース内で定義できるのは「抽象メソッド」だという点で、クラスとは大きく異なります。抽象メソッドが通常のメソッドである具象メソッドと違うのは、処理を書くためのブロック({}で囲まれた部分)を持たないことです。つまり名前と引数、戻り値の定義しかありません。インターフェースの役割は、クラスがどんなメソッドを持つかを表すことであり、実際の処理はインターフェースを実装したクラスの中に書きます。

 またクラスと違って単体ではインスタンスを生成できない点もあります。