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

Javaでコンストラクタから別のコンストラクタを呼び出す方法を解説

この記事では、Javaにおいてあるコンストラクタから別のコンストラクタを呼び出す方法について解説します。コンストラクタを呼び出す際には、this() キーワードを使用します。

以下のサンプルでは、this() を使って2つの数値の合計と積を計算し、結果を表示する方法を紹介します。

入力と出力の例

たとえば、次のような入力が与えられたとします。

The numbers are defined as 12 and 30

このとき、期待される出力は以下の通りです。

The sum is: 42
The product is: 360

処理の流れ(アルゴリズム)

  1. 処理を開始する。
  2. 整数型の変数(例:my_sum)を宣言する。
  3. mainクラス内で、入力として使用する数値への this 参照を定義する。
  4. this() コンストラクタが呼び出され、現在のクラスのコンストラクタが実行される。
  5. 別途 display メソッドを用意し、計算結果を表示できるようにする。
  6. クラスのオブジェクトを生成し、各メソッドを呼び出して結果を出力する。

例1:2つの数値の合計を求める

まずは、引数なしのコンストラクタから this(12, 30) を使って引数付きコンストラクタを呼び出し、2つの数値の合計を計算する例です。

public class Main {
   int my_sum;
   Main() {
      this(12, 30);
   }
   Main(int my_input_1, int my_input_2) {
      System.out.println("The numbers are defined as " +my_input_1 +" and " +my_input_2);
      this.my_sum = my_input_1 + my_input_2;
   }
   void display() {
      System.out.println("The sum is: " + my_sum);
   }
   public static void main(String[] args) {
      Main my_object = new Main();
      my_object.display();
   }
}

実行結果

The numbers are defined as 12 and 30
The sum is: 42

例2:2つの数値の積を求める

続いて、同じ仕組みを使って2つの数値の積を計算する例です。コンストラクタ内の処理を乗算に変更している点に注目してください。

public class Main {
   int my_product;
   Main() {
      this(12, 30);
   }
   Main(int my_input_1, int my_input_2) {
      System.out.println("The numbers are defined as " +my_input_1 +" and " +my_input_2);
      this.my_product = my_input_1 * my_input_2;
   }
   void display() {
      System.out.println("The product of the two values is: " + my_product);
   }
   public static void main(String[] args) {
      Main my_object = new Main();
      my_object.display();
   }
}

実行結果

The numbers are defined as 12 and 30
The product of the two values is: 360

まとめ

このように、this() を使うことで、同じクラス内の別のコンストラクタを簡単に呼び出せます。コンストラクタのオーバーロードと組み合わせることで、初期化処理の重複を避け、コードを簡潔に保つことができます。なお、this() は必ずコンストラクタの先頭行で呼び出す必要がある点に注意しましょう。

  1. mainメソッドなしでJavaプログラムを実行できますか?staticブロックを使った方法を解説

    結論から言うと、staticブロック(静的初期化ブロック)を利用すれば、mainメソッドなしでもJavaプログラムを実行することが可能です。 Javaにおけるstaticブロックとは、クラスがクラスローダー(ClassLoader)によってメモリにロードされるタイミングで、一度だけ実行される一連のステートメントの集まりです。「静的初期化ブロック(Static Initialization Block)」とも呼ばれ、スタックメモリに直接展開されるという特徴があります。 サンプルコード class StaticInitializationBlock{ static{ Sys

  2. Javaで別のパッケージのクラスにアクセスする3つの方法

    Javaでは、クラスをパッケージにまとめることでコードを整理できますが、別のパッケージにあるクラスを利用したい場合には特別な記述方法が必要です。ここでは、payrollパッケージ内に定義されたBossクラスを例に、その方法を解説します。例:payrollパッケージ内のBossクラスpackage payroll; public class Boss { public void payEmployee(Employee e) { e.mailCheck(); } }上記のコードでは、BossクラスとEmployeeクラスが同じpayrollパッケージ内にあるため、