Java 9インターフェースにおけるプライベートメソッドの使い方を徹底解説
Java 9では、インターフェース内にプライベートメソッド(privateメソッド)を定義できるようになりました。これにより、defaultメソッドやstaticメソッド間で共通処理を再利用できるようになり、インターフェース内のコード重複を大幅に削減できます。
以下に、Java 9インターフェースでプライベートメソッドを使用する具体例を示します。
サンプルコード
interface my_int{
public abstract void multiply_vals(int a, int b);
public default void add_vals(int a, int b){
sub_vals(a, b);
System.out.print("Default method result ");
System.out.println(a + b);
}
private void sub_vals(int a, int b){
System.out.print("Private method result ");
System.out.println(a - b);
}
private static void div(int a, int b){
System.out.print(" Private static method result ");
System.out.println(a / b);
}
}
public class my_new_int implements my_int{
@Override
public void multiply_vals(int a, int b){
System.out.print("Abstract method result ");
System.out.println(a * b);
}
public static void main(String[] args){
my_int in = new my_new_int();
in.multiply_vals(11, 34);
in.add_vals(78, 0);
}
}実行結果
Abstract method result 374
Private method result 78
Default method result 78
コードの解説
まず、my_intという名前のインターフェースが定義されています。このインターフェースには、本体を持たない抽象メソッド(multiply_vals)が1つ宣言されています。
次に、2つの数値を加算するdefaultメソッド(add_vals)が定義されており、その内部でプライベートメソッドsub_vals(2つの数値を減算する処理)が呼び出されています。さらに、2つの値を除算するprivate staticメソッド(div)も定義されています。
続いて、my_new_intというクラスが、このインターフェースを実装しています。このクラスは、乗算を行う抽象メソッドを@Overrideアノテーション付きでオーバーライドし、独自の処理内容に再定義しています。
mainメソッド内では、インターフェース型の変数に対して実装クラスのインスタンスが生成され、具体的な値を引数としてmultiply_valsメソッドとadd_valsメソッドが順に呼び出されます。それぞれの計算結果がコンソールに出力される仕組みです。
プライベートメソッドを使うメリット
- コードの再利用性向上: 複数のdefaultメソッドから共通処理を呼び出せるため、同じロジックを何度も書く必要がなくなります。
- カプセル化の強化: プライベートメソッドはインターフェース外部からアクセスできないため、内部実装の詳細を隠蔽できます。
- 可読性の向上: 処理を小さなメソッドに分割することで、インターフェース全体の構造が把握しやすくなります。
なお、インスタンス用のprivateメソッドはdefaultメソッドから、private staticメソッドはstaticメソッドやdefaultメソッドの両方から呼び出すことができます。用途に応じて使い分けることで、より整理されたインターフェース設計が可能になります。
-
Java 8のインターフェースで使える静的メソッドの基本と実践例
Java 8におけるインターフェースの静的メソッドとはJava 8以降、インターフェースには静的メソッド(staticメソッド)を定義できるようになりました。これにより、ユーティリティ的なヘルパーメソッドをインターフェース内に直接記述でき、関連する処理をひとまとめに管理しやすくなります。静的メソッドは「インターフェース名.メソッド名()」の形式で呼び出すのが基本です。実装クラスのインスタンスからは直接呼び出せず、オーバーライドもできない点に注意しましょう。静的メソッドを持つインターフェースの定義例次の例では、Vehicleインターフェースにデフォルトメソッド print() と、静的メソッド
-
Javaにおけるメソッドのオーバーロード(静的ポリモーフィズム)の基本と実装例
メソッドのオーバーロードは、静的ポリモーフィズム(静的多態性)の一種です。Javaでは、同じ名前を持つ複数のメソッドを、引数の数や型が異なる形で定義することができます。これにより、呼び出し側は同じメソッド名を使いながら、渡す引数に応じて適切な処理が自動的に選択されます。以下に、実際のサンプルプログラムを示します。サンプルコードpublic class Tester { public static void main(String args[]) { Tester tester = new Tester(); System.out.println(test