Java
 Computer >> コンピューター >  >> プログラミング >> Java

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メソッドの両方から呼び出すことができます。用途に応じて使い分けることで、より整理されたインターフェース設計が可能になります。

  1. Java 8のインターフェースで使える静的メソッドの基本と実践例

    Java 8におけるインターフェースの静的メソッドとはJava 8以降、インターフェースには静的メソッド(staticメソッド)を定義できるようになりました。これにより、ユーティリティ的なヘルパーメソッドをインターフェース内に直接記述でき、関連する処理をひとまとめに管理しやすくなります。静的メソッドは「インターフェース名.メソッド名()」の形式で呼び出すのが基本です。実装クラスのインスタンスからは直接呼び出せず、オーバーライドもできない点に注意しましょう。静的メソッドを持つインターフェースの定義例次の例では、Vehicleインターフェースにデフォルトメソッド print() と、静的メソッド

  2. Javaにおけるメソッドのオーバーロード(静的ポリモーフィズム)の基本と実装例

    メソッドのオーバーロードは、静的ポリモーフィズム(静的多態性)の一種です。Javaでは、同じ名前を持つ複数のメソッドを、引数の数や型が異なる形で定義することができます。これにより、呼び出し側は同じメソッド名を使いながら、渡す引数に応じて適切な処理が自動的に選択されます。以下に、実際のサンプルプログラムを示します。サンプルコードpublic class Tester { public static void main(String args[]) { Tester tester = new Tester(); System.out.println(test