Javaのインターフェースとは?基本構文からクラスとの違いまで徹底解説
Javaのインターフェースとは
インターフェースは、Javaにおける参照型の一つで、クラスとよく似た性質を持っています。その本体は抽象メソッドの集まりであり、クラスがインターフェースを実装することで、その抽象メソッドを引き継ぐ仕組みになっています。
抽象メソッドに加えて、インターフェースには定数、デフォルトメソッド、静的メソッド、ネストされた型を含めることも可能です。ただし、メソッドの本体(処理内容)が存在するのは、デフォルトメソッドと静的メソッドのみです。
インターフェースの記述方法はクラスと似ていますが、両者の役割は異なります。クラスがオブジェクトの属性や振る舞いを記述するのに対し、インターフェースはクラスが実装すべき振る舞いを定義するものです。
また、インターフェースを実装するクラスが抽象クラスでない限り、インターフェースで宣言されているすべてのメソッドを、そのクラス内で必ず定義しなければなりません。
インターフェースとクラスの共通点
インターフェースは、以下の点においてクラスと類似しています。
- インターフェースには任意の数のメソッドを含めることができる。
- インターフェースは拡張子「.java」のファイルに記述され、ファイル名はインターフェース名と一致させる必要がある。
- コンパイル後のバイトコードは「.class」ファイルとして出力される。
- インターフェースはパッケージに所属し、対応するバイトコードファイルはパッケージ名と一致するディレクトリ構造の中に配置する必要がある。
インターフェースとクラスの相違点
一方で、インターフェースにはクラスとは異なる特徴がいくつもあります。
- インターフェースはインスタンス化できない。
- インターフェースにはコンストラクタが存在しない。
- インターフェース内のすべてのメソッドは暗黙的に抽象メソッドとなる。
- インターフェースにはインスタンスフィールドを持てない。フィールドとして宣言できるのは、staticかつfinalな定数のみである。
- クラスはインターフェースをextendsで継承するのではなく、implementsで実装する。
- インターフェースは複数のインターフェースを同時に継承できる。
インターフェースの宣言方法
インターフェースを宣言するには、「interface」キーワードを使用します。以下に基本的な宣言の例を示します。
サンプルコード
次のコードは、インターフェースの標準的な宣言形式です。
/* ファイル名 : NameOfInterface.java */
import java.lang.*;
// import文は任意の数だけ記述可能
public interface NameOfInterface {
// staticかつfinalなフィールドを任意の数だけ宣言可能
// 抽象メソッドの宣言を任意の数だけ記述
}-
Javaの抽象クラスとは?基本ルールと実装例をわかりやすく解説
Javaの抽象クラスとは宣言に「abstract」キーワードを含むクラスは、抽象クラスと呼ばれます。抽象クラスは、継承によって利用されることを前提とした設計用のクラスであり、オブジェクト指向プログラミングにおける重要な概念の一つです。抽象クラスの主な特徴抽象クラスには、抽象メソッド(本体を持たないメソッド。例:public void get();)が含まれる場合もあれば、含まれない場合もあります。ただし、クラス内に1つでも抽象メソッドが存在する場合、そのクラスは必ず abstract として宣言しなければなりません。abstract として宣言されたクラスは、インスタンス化(newによるオブジ
-
Javaのfinalクラスとは?継承を禁止する仕組みと使い方を徹底解説
Javaにおいて、クラスにfinal修飾子を付けて宣言する最大の目的は、そのクラスがサブクラス化(継承)されることを防ぐことです。クラスがfinalとして宣言されると、どのクラスもそのクラスを継承できなくなり、finalクラスの機能や振る舞いを拡張・変更することが不可能になります。finalクラスの基本構文finalクラスの宣言は非常にシンプルです。クラス名の前にfinalキーワードを付けるだけです。public final class Test { // クラスの本体 }このように宣言されたTestクラスに対して、以下のような継承を試みるとコンパイルエラーが発生します。// コンパイ