インターフェースで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 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。