Java のデフォルトコンストラクタ
Java 言語では、コンストラクター
という用語は、プログラミングで実行するメソッドに似ています。コンストラクターの作成時に留意する必要のあるいくつかのプロパティがあります。
- コンストラクターの名前は、常にクラス名の名前と同じである必要があります。
- コンストラクターの戻り型があってはなりません。
- クラスには、パラメーター化されたコンストラクターと
引数なし
コンストラクター(デフォルトのコンストラクター)を含めることができます。 - オブジェクトがインスタンス化されると、コンストラクターは常に呼び出されます。
- コンストラクターは、
abstract
、static
、final
、および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
クラスの変数 a
が println
関数で参照されると、出力される値は以下の出力になります。
出力:
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
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn