カテゴリ: Javaのインターフェース 更新日: 2026/05/20

Javaのインターフェースに静的メソッドを定義する方法を完全解説!初心者向けステップバイステップガイド

343
Java の静的メソッドをインターフェースに定義する方法

先生と生徒の会話形式で理解しよう

生徒

「先生、Javaのインターフェースにメソッドって書けるって聞いたんですけど、staticメソッドも書けるんですか?」

先生

「はい、Java 8以降では、インターフェースにもstaticメソッドを定義できるようになりました。」

生徒

「staticメソッドって、どういうときに使うんですか?クラスに書くのとは違うんですか?」

先生

「良い着眼点ですね。インターフェースにstaticメソッドを定義することで、特定の機能や定数に関するユーティリティ的な処理を集約できます。具体例を見ながら学んでみましょう。」

1. Javaのインターフェースにおけるstaticメソッドとは?

1. Javaのインターフェースにおけるstaticメソッドとは?
1. Javaのインターフェースにおけるstaticメソッドとは?

Javaのインターフェースにstaticメソッドを定義できるようになったのは、Java 8からです。従来のJavaでは、インターフェースには抽象メソッド(処理内容が書かれていないメソッド)しか定義できませんでしたが、Java 8では、defaultメソッドやstaticメソッドといった、処理を持つメソッドの定義が可能になりました。

特にstaticメソッドは、そのインターフェース自体の機能として定義され、インスタンスを作らなくても呼び出せるという特徴があります。

2. staticメソッドの基本的な定義方法

2. staticメソッドの基本的な定義方法
2. staticメソッドの基本的な定義方法

Javaのインターフェースにstaticメソッドを定義するには、次のように記述します。


public interface MathUtils {
    static int add(int a, int b) {
        return a + b;
    }
}

このように、interfaceの中でstaticキーワードを使うことで、実装付きの静的メソッドを作ることができます。

3. staticメソッドの呼び出し方

3. staticメソッドの呼び出し方
3. staticメソッドの呼び出し方

定義したstaticメソッドは、インターフェース名を使って直接呼び出します。以下の例を見てみましょう。


public class StaticMethodDemo {
    public static void main(String[] args) {
        int result = MathUtils.add(10, 5);
        System.out.println("合計: " + result);
    }
}

合計: 15

このように、MathUtils.add(10, 5)のようにインターフェース名を通じて呼び出せるため、ユーティリティ的な処理を共通化しやすくなります。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. クラスのstaticメソッドとの違い

4. クラスのstaticメソッドとの違い
4. クラスのstaticメソッドとの違い

Javaのstaticメソッドといえば、通常はクラス内に定義することが一般的です。たとえば、MathクラスのMath.sqrt()などが有名です。しかし、インターフェースに定義したstaticメソッドは、実装クラスから継承されることはなく、あくまでインターフェース名からのみ呼び出されます。

つまり、次のようなことはできません。


public class MyClass implements MathUtils {
    public void useMethod() {
        // MathUtils.add() はOK
        int x = MathUtils.add(3, 4);

        // add() は直接呼び出せない
        // int y = add(3, 4); // コンパイルエラー
    }
}

5. Javaインターフェースのstaticメソッドの活用例

5. Javaインターフェースのstaticメソッドの活用例
5. Javaインターフェースのstaticメソッドの活用例

インターフェースにstaticメソッドを定義することで、関連するユーティリティメソッドをインターフェースごとに整理することができます。例えば、ファイル操作用インターフェースに便利な読み込み処理をまとめたり、エラーログ出力用のインターフェースに標準出力メソッドを組み込んだりできます。


public interface FileHelper {
    static void printInfo(String fileName) {
        System.out.println("ファイル名:" + fileName);
    }
}

public class Main {
    public static void main(String[] args) {
        FileHelper.printInfo("data.txt");
    }
}

ファイル名:data.txt

このように、Javaのインターフェースのstaticメソッドは、共通処理やユーティリティ処理の集約に非常に便利です。

6. staticメソッドとdefaultメソッドの違い

6. staticメソッドとdefaultメソッドの違い
6. staticメソッドとdefaultメソッドの違い

Java 8ではstaticメソッドのほかにdefaultメソッドも導入されましたが、この2つは明確に役割が異なります。

  • staticメソッド:インターフェース名からのみ呼び出せる。継承されない。
  • defaultメソッド:実装クラスに継承されて、オーバーライドも可能。

それぞれの特徴を理解することで、用途に応じた使い分けができるようになります。

7. インターフェースにstaticメソッドを定義するメリット

7. インターフェースにstaticメソッドを定義するメリット
7. インターフェースにstaticメソッドを定義するメリット

Javaのインターフェースにstaticメソッドを定義する主なメリットは以下の通りです。

  • 関連する処理を一か所にまとめられる(ユーティリティの集約)
  • インスタンスを生成せずに処理を呼び出せる
  • インターフェースの利用者に、便利な機能を追加できる

インターフェースに静的メソッドを定義することで、設計の柔軟性やメンテナンス性が向上します。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Java(ジャバ)のインターフェース(Interface)に静的メソッド(staticメソッド)を定義できるようになったのはいつからですか?

Javaのインターフェースに静的メソッド(staticメソッド)を定義できるようになったのは、Java 8(ジャバ エイト)というバージョン以降のアップデートからです。それまでの従来のJavaでは、インターフェースには処理内容を持たない「抽象メソッド」しか定義できませんでしたが、Java 8の登場によって「defaultメソッド(デフォルトメソッド)」や「staticメソッド(スタティックメソッド)」といった、具体的なプログラム処理を記述できるメソッドが追加可能になりました。これにより、関連するユーティリティ(共通機能)をインターフェース内に直接集約できるようになり、設計の自由度が大幅に向上しました。
Javaのインターフェースの一覧へ
新着記事
Java
Java の古い日付クラス(Date, Calendar)と新しい日付 API の違い
JavaのDateとCalendarと新しい日付APIの違いとは?初心者向け完全ガイド
Java
Java のカレンダー機能(java.util.Calendar)の使い方
JavaのCalendarクラスの使い方をわかりやすく解説!日付や時刻の操作に便利な基本機能まとめ
Flutter
Dartのパッケージ管理(pubspec.yaml)の使い方
FlutterとDartのパッケージ管理完全ガイド!pubspec.yamlの使い方を初心者向けに徹底解説
Java
Java のミリ秒(Unix タイムスタンプ)を取得・変換する方法
JavaでUnixタイムスタンプ(ミリ秒)を取得・変換する方法を徹底解説!
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク