HOWTO · Java

Java のデフォルトコンストラクタ

この記事では、デフォルトのコンストラクターが Java でどのように機能するかを紹介します。

Java 言語では、コンストラクターという用語は、プログラミングで実行するメソッドに似ています。コンストラクターの作成時に留意する必要のあるいくつかのプロパティがあります。

  1. コンストラクターの名前は、常にクラス名の名前と同じである必要があります。
  2. コンストラクターの戻り型があってはなりません。
  3. クラスには、パラメーター化されたコンストラクターと引数なしコンストラクター(デフォルトのコンストラクター)を含めることができます。
  4. オブジェクトがインスタンス化されると、コンストラクターは常に呼び出されます。
  5. コンストラクターは、abstractstaticfinal、および synchronized のようなキーワードを使用しないでください。

Java のデフォルトコンストラクタ

Java のデフォルトコンストラクタは、引数なしコンストラクタと呼ばれることがよくあります。以下では、コードブロックをチェックして、Java のデフォルトコンストラクターを理解できます。

public class Main {
  public static void main(String[] args) {
    B b = new B();
    System.out.println(b.a);
  }
}

class B {
  int a;
}

上記のコードブロックでは、2つのクラスがあることがわかります。1つは main メソッドを保持し、もう 1つはコンストラクターの機能を表すために作成されています。

main 関数はプログラムのエントリポイントであり、ここから実行が開始されます。したがって、ドライバークラスステートメント new B() は、B クラスのパブリック no-argument コンストラクターを呼び出します。指定されたコンストラクターの明示的な定義がなかったため、コンパイラーは独自にデフォルトコンストラクターを作成し、上記のステートメントでそれを呼び出します。

コンストラクターは、クラスの変数を初期化します。コンストラクターが定義されていない場合、コンパイラーは変数の値をデフォルトに初期化します。B クラスの変数 aprintln 関数で参照されると、出力される値は以下の出力になります。

出力:

0

Java のパラメーター化されたコンストラクター

パラメーター化されたコンストラクターの使用は、オブジェクトの作成時にパラメーターの数を渡すことです。以下は、その機能を示すコードブロックです。

public class Main {
  public static void main(String[] args) {
    A a = new A(1, "One");
    System.out.println(a.a + " " + a.b);
    //      A a1= new A();
  }
}

class A {
  int a;
  String b;

  A(int a, String b) {
    this.a = a;
    this.b = b;
  }
}

上記のコードブロックで、A はパラメーター化されたコンストラクターを示すクラスです。もう 1つは、main メソッドを保持するクラスです。関数内で、new A(1, "One") ステートメントは、A クラスのパラメーター化されたコンストラクターを内部的に呼び出します。作成されたオブジェクトはクラスの参照に割り当てられ、コンストラクターの定義はクラスで定義されます。

コンストラクターA(int a, String b) は、a 変数と b 変数の値を初期化します。パラメータで渡された値は、変数にコピーされます。println 関数で、参照変数を使用すると、A クラスのクラス変数が呼び出されます。インスタンス化された値を、間にスペースを追加して出力に出力します。

その隣にコメント文があります。//演算子を使用して実行されたステートメントについてコメントします。ステートメント new A() は、クラスの引数なしコンストラクターを内部的に見つけようとします。コンパイラーがデフォルトのコンストラクターを見つけられない場合は、デフォルトのコンストラクターを作成できます。

この機能は、明示的なコンストラクターが定義されていない場合に限定されます。したがって、この場合、ユーザーは no-args コンストラクターを手動で作成する必要があります。A a1= new A(); 関数はコンパイル時エラーをスローします。この問題を解決するための 2つのオプションは、デフォルトコンストラクターを作成するか、既存のステートメントをブレークに導く既存のパラメーター化されたコンストラクターの署名を変更することです。したがって、その行はコメント化されています。

出力:

1 One