インターフェースでstaticメソッドを定義する

広告

インターフェースでは Java8 以降、処理内容を記述したメソッドも定義できるようになりました。一つは default メソッド、もう一つがこの記事で解説する static メソッドです。 static メソッドはインターフェースを実装したクラスでオーバーライドすることはできないため、インターフェースに関連する処理をまとめて定義するために使用されます。ここではオブジェクト指向における static メソッドの使い方について解説します。

インターフェースのstaticメソッドとは

インターフェースでは通常、処理内容を持たない抽象メソッドを定義しますが、Java8 以降では処理内容を持つ static メソッドを定義することもできるようになりました。 static メソッドはインターフェースに関連した処理をまとめて定義するために使用されます。

static メソッドは static キーワードを使用して定義します。

static 戻り値の型 メソッド名(引数) {
  // 処理内容
}

static メソッドは、インターフェースを実装したクラスでオーバーライドすることはできません。

次の例ではインターフェースの中に static メソッドを定義しています。

interface Product {
  static void showCategory() {
    System.out.println("商品カテゴリー");
  }
}

このように static キーワードを付けることで、インターフェースの中に処理内容を持つメソッドを定義することができます。

staticメソッドの呼び出し

インターフェースで定義された static メソッドは、「インターフェース名.メソッド名」のように呼び出します。

interface Product {
  static void showCategory() {
    System.out.println("商品カテゴリー");
  }
}

public class Sample {
  public static void main(String[] args) {
    Product.showCategory();
  }
}

インターフェースを実装したクラスのオブジェクトを使って「オブジェクト名.メソッド名」のように呼び出すことはできません。

defaultメソッドとの違い

インターフェースでは Java8 以降は static メソッドが定義できるようになりましたが、同じタイミングで default メソッドも定義できるようになりました。どちらのメソッドも、メソッドの処理内容を定義できる点は同じですが、両者には次のような違いがあります。

default メソッド
・インターフェースを実装したクラスから利用できる
・必要に応じてオーバーライドできる

static メソッド
・インターフェース名を使って呼び出す
・オーバーライドすることはできない

static メソッドは内容を変更されることがなく、いつでも呼び出せるメソッドのため、インターフェースに関連した処理をまとめて定義するために使用されます。

-- --

オブジェクト指向における static メソッドの使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。