Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaのインターフェースとは?基本構文からクラスとの違いまで徹底解説

Javaのインターフェースとは

インターフェースは、Javaにおける参照型の一つで、クラスとよく似た性質を持っています。その本体は抽象メソッドの集まりであり、クラスがインターフェースを実装することで、その抽象メソッドを引き継ぐ仕組みになっています。

抽象メソッドに加えて、インターフェースには定数、デフォルトメソッド、静的メソッド、ネストされた型を含めることも可能です。ただし、メソッドの本体(処理内容)が存在するのは、デフォルトメソッドと静的メソッドのみです。

インターフェースの記述方法はクラスと似ていますが、両者の役割は異なります。クラスがオブジェクトの属性や振る舞いを記述するのに対し、インターフェースはクラスが実装すべき振る舞いを定義するものです。

また、インターフェースを実装するクラスが抽象クラスでない限り、インターフェースで宣言されているすべてのメソッドを、そのクラス内で必ず定義しなければなりません。

インターフェースとクラスの共通点

インターフェースは、以下の点においてクラスと類似しています。

  • インターフェースには任意の数のメソッドを含めることができる。
  • インターフェースは拡張子「.java」のファイルに記述され、ファイル名はインターフェース名と一致させる必要がある。
  • コンパイル後のバイトコードは「.class」ファイルとして出力される。
  • インターフェースはパッケージに所属し、対応するバイトコードファイルはパッケージ名と一致するディレクトリ構造の中に配置する必要がある。

インターフェースとクラスの相違点

一方で、インターフェースにはクラスとは異なる特徴がいくつもあります。

  • インターフェースはインスタンス化できない。
  • インターフェースにはコンストラクタが存在しない。
  • インターフェース内のすべてのメソッドは暗黙的に抽象メソッドとなる。
  • インターフェースにはインスタンスフィールドを持てない。フィールドとして宣言できるのは、staticかつfinalな定数のみである。
  • クラスはインターフェースをextendsで継承するのではなく、implementsで実装する。
  • インターフェースは複数のインターフェースを同時に継承できる。

インターフェースの宣言方法

インターフェースを宣言するには、「interface」キーワードを使用します。以下に基本的な宣言の例を示します。

サンプルコード

次のコードは、インターフェースの標準的な宣言形式です。

/* ファイル名 : NameOfInterface.java */
import java.lang.*;
// import文は任意の数だけ記述可能
public interface NameOfInterface {
   // staticかつfinalなフィールドを任意の数だけ宣言可能
   // 抽象メソッドの宣言を任意の数だけ記述
}

  1. Javaの抽象クラスとは?基本ルールと実装例をわかりやすく解説

    Javaの抽象クラスとは宣言に「abstract」キーワードを含むクラスは、抽象クラスと呼ばれます。抽象クラスは、継承によって利用されることを前提とした設計用のクラスであり、オブジェクト指向プログラミングにおける重要な概念の一つです。抽象クラスの主な特徴抽象クラスには、抽象メソッド(本体を持たないメソッド。例:public void get();)が含まれる場合もあれば、含まれない場合もあります。ただし、クラス内に1つでも抽象メソッドが存在する場合、そのクラスは必ず abstract として宣言しなければなりません。abstract として宣言されたクラスは、インスタンス化(newによるオブジ

  2. Javaのfinalクラスとは?継承を禁止する仕組みと使い方を徹底解説

    Javaにおいて、クラスにfinal修飾子を付けて宣言する最大の目的は、そのクラスがサブクラス化(継承)されることを防ぐことです。クラスがfinalとして宣言されると、どのクラスもそのクラスを継承できなくなり、finalクラスの機能や振る舞いを拡張・変更することが不可能になります。finalクラスの基本構文finalクラスの宣言は非常にシンプルです。クラス名の前にfinalキーワードを付けるだけです。public final class Test { // クラスの本体 }このように宣言されたTestクラスに対して、以下のような継承を試みるとコンパイルエラーが発生します。// コンパイ