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

Javaのdefaultメソッドの使い方を解説!初心者でもわかるインターフェースの進化ポイント

342
Java のデフォルトメソッド(default メソッド)の使い方

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

生徒

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

先生

「良いところに気づいたね。Java 8から導入されたdefaultメソッドは、インターフェースにも実装付きのメソッドが書けるようにする新しい仕組みなんだよ。」

生徒

「でも、インターフェースって本来は実装を持たない設計じゃなかったんですか?」

先生

「そう、それが基本だったけど、Javaの進化によってdefaultメソッドが追加されて、もっと柔軟に設計できるようになったんだ。それじゃ、使い方と注意点を一緒に見ていこう!」

1. defaultメソッドとは?

1. defaultメソッドとは?
1. defaultメソッドとは?

Javaのdefaultメソッドとは、インターフェースの中に具体的な処理内容を持ったメソッドを定義できる機能です。Java 8で導入され、既存のインターフェースに後からメソッドを追加しても、実装クラス側の互換性を保つために設計されました。

通常、インターフェースはabstractなメソッドしか持てませんでしたが、defaultキーワードを使うことで、中身のあるメソッドを書くことが可能になりました。

2. Javaでのdefaultメソッドの基本的な書き方

2. Javaでのdefaultメソッドの基本的な書き方
2. Javaでのdefaultメソッドの基本的な書き方

Javaのdefaultメソッドは、次のようにdefaultキーワードを使って定義します。


public interface Greeting {
    default void sayHello() {
        System.out.println("こんにちは!");
    }
}

このように書くことで、Greetingインターフェースを実装するすべてのクラスでsayHello()メソッドがそのまま利用可能になります。

3. 実装クラスでdefaultメソッドを使う例

3. 実装クラスでdefaultメソッドを使う例
3. 実装クラスでdefaultメソッドを使う例

インターフェースのdefaultメソッドを実装クラスでそのまま使う、またはオーバーライドするサンプルを見てみましょう。


public interface Greeting {
    default void sayHello() {
        System.out.println("こんにちは!");
    }
}

public class JapaneseGreeting implements Greeting {
    // オーバーライドしない場合は、GreetingのsayHello()がそのまま使われる
}

public class EnglishGreeting implements Greeting {
    @Override
    public void sayHello() {
        System.out.println("Hello!");
    }
}

こんにちは!
Hello!

JapaneseGreetingではsayHello()をそのまま使用しており、EnglishGreetingでは独自にオーバーライドしています。このように、defaultメソッドは柔軟に扱うことができます。

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

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

※ Amazon広告リンク

4. 複数インターフェースとdefaultメソッドの衝突

4. 複数インターフェースとdefaultメソッドの衝突
4. 複数インターフェースとdefaultメソッドの衝突

Javaでは、複数のインターフェースを同時にimplementsすることが可能ですが、同名のdefaultメソッドが複数あるとコンパイルエラーになります。


public interface A {
    default void show() {
        System.out.println("Aのshow");
    }
}

public interface B {
    default void show() {
        System.out.println("Bのshow");
    }
}

public class MyClass implements A, B {
    @Override
    public void show() {
        A.super.show(); // または B.super.show()
    }
}

このような場合、クラス側でどちらのメソッドを使うのかをインターフェース名.super.メソッド名で明示する必要があります。

5. defaultメソッドの使い道とメリット

5. defaultメソッドの使い道とメリット
5. defaultメソッドの使い道とメリット

Javaのdefaultメソッドは、以下のような場面で役立ちます。

  • 既存のインターフェースに機能追加したいとき
  • 共通的な処理をインターフェース側で提供したいとき
  • 実装クラスの負担を減らしたいとき

たとえば、ログ出力やバリデーション処理など、複数のクラスで共通して使う処理をdefaultメソッドにしておけば、コードの重複を減らせます。

6. defaultメソッドと抽象メソッドの違い

6. defaultメソッドと抽象メソッドの違い
6. defaultメソッドと抽象メソッドの違い

defaultメソッドとabstractメソッドの違いをしっかり理解しておきましょう。

  • defaultメソッド:インターフェース内に処理を書ける。オーバーライドは任意。
  • abstractメソッド:実装クラスで必ずオーバーライドが必要。処理は書けない。

この違いを理解すると、インターフェースをより柔軟に設計できるようになります。

7. staticメソッドとの違いにも注意

7. staticメソッドとの違いにも注意
7. staticメソッドとの違いにも注意

Javaのインターフェースにはstaticメソッドも定義できます。defaultメソッドとの主な違いは、呼び出し方です。


public interface Util {
    static void printInfo() {
        System.out.println("情報表示");
    }
}

Util.printInfo()のように、クラス名から直接呼び出します。一方、defaultメソッドは実装クラスのインスタンス経由で呼び出します。

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

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

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

Java(ジャバ)のインターフェースにあるdefault(デフォルト)メソッドとは何ですか?初心者向けに分かりやすく教えてください。

Java(ジャバ)のdefault(デフォルト)メソッドとは、インターフェースの中に具体的な処理内容(実装)を記述できるメソッドのことです。通常、Java(ジャバ)のインターフェースは「メソッドの型」だけを定義し、具体的な中身は書きませんが、Java 8(ジャバ エイト)というバージョンから、default(デフォルト)キーワードを付けることで、中身のあるメソッドを直接インターフェースに書けるようになりました。これにより、プログラムの設計がより柔軟になり、共通の機能をインターフェース側で用意しておくことが可能になります。
Javaのインターフェースの一覧へ
新着記事
Python
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに解説
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに徹底解説
Dart
Dartのクラスの作り方!定義・インスタンス生成の基礎
Dartのクラスの作り方を完全解説!初心者でも理解できるクラス定義とインスタンス生成の基礎
Java
Javaの同一性と同値性
Javaの同一性と同値性をわかりやすく解説!初心者向けの基礎知識
AWS
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで

🔌 USBポート不足を解消

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

UGREEN USB-Cハブを見る

※ Amazon広告リンク