コンストラクタのオーバーロード Java
⚡ スマートサマリー
コンストラクタのオーバーロード Java パラメータリストによって異なる複数のコンストラクタをクラスが宣言できるようにすることで、開発者は柔軟なオブジェクト初期化、this() を介したよりクリーンなコードの再利用、およびインスタンス化時にデフォルト値またはカスタム値が必要な場合の予測可能な動作を実現できます。
コンストラクタオーバーロードとは何ですか Java?
コンストラクタのオーバーロード Java これは、クラスがパラメータリストが異なる複数のコンストラクタを宣言する手法です。コンパイラは、パラメータの数とデータ型を分析することで、これらのコンストラクタを区別します。
クラスの有効なコンストラクタの例 アカウント 以下に示します。
Account(int a); Account (int a,int b); Account (String a,int b);
コンストラクタのオーバーロードが必要な理由 Java?
コンストラクタのオーバーロード Java クラス内に複数のコンストラクタを設け、それぞれに異なるパラメータリストを持たせることで、柔軟性とコード効率を向上させます。
- オブジェクト作成の柔軟性: コンストラクタのオーバーロードを使用すると、パラメータの数や型に応じて、さまざまな方法でオブジェクトを初期化できます。
- Code 再利用性: コンストラクタのロジックは、あるコンストラクタから別のコンストラクタを呼び出すことで再利用できます。 この() キーワード。
- 読みやすさの向上: オーバーロードされたコンストラクタは、さまざまな初期化ニーズに対応する具体的なオプションを提供することで、コードをより直感的に理解できるようにします。
- デフォルトおよびカスタム初期化: コンストラクタのオーバーロードを使用すると、デフォルト初期化オブジェクトとカスタム初期化オブジェクトの両方を簡単に作成できます。
例: コンストラクタのオーバーロード Java
次の例は、コンストラクタのオーバーロードを示しています。 Java という名前のクラスを使用する デモ.
ステップ1) エディターにコードを入力します。
class Demo{ int value1; int value2; /*Demo(){ value1 = 10; value2 = 20; System.out.println("Inside 1st Constructor"); }*/ Demo(int a){ value1 = a; System.out.println("Inside 2nd Constructor"); } Demo(int a,int b){ value1 = a; value2 = b; System.out.println("Inside 3rd Constructor"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); } public static void main(String args[]){ Demo d1 = new Demo(); Demo d2 = new Demo(30); Demo d3 = new Demo(30,40); d1.display(); d2.display(); d3.display(); } }
ステップ2) コードを保存、コンパイル、実行してください。
ステップ3) エラーが発生しています。コンストラクタのオーバーロードの次のステップに進む前に、エラーをデバッグしてみてください。 Java.
ステップ4) すべてのクラスにはデフォルトがあります コンストラクター Javaデフォルトコンストラクタ クラスのデモ is デモ()指定しない場合は、コンパイラが自動的に作成し、変数をデフォルト値で初期化します。
ただし、次のようなパラメータ付きコンストラクタを指定すると デモ(int a) デフォルトを使用したい デモ()そのため、明示的に宣言することが義務付けられています。
ステップ5) コードの4行目から8行目までのコメントを解除し、保存、コンパイル、そしてプログラムを再度実行して、動作の変化を確認してください。
コンストラクタチェーン Java
基本クラスが子によって拡張されるシナリオを考えてみましょう。 子クラスのオブジェクトが作成されるたびに、最初に親クラスのコンストラクターが呼び出されます。 これはと呼ばれます コンストラクタチェーン.
例: コンストラクタオーバーロードによるコンストラクタチェーンを理解するために Java
ステップ1) 次のコードをエディターにコピーします。
class Demo{ int value1; int value2; Demo(){ value1 = 1; value2 = 2; System.out.println("Inside 1st Parent Constructor"); } Demo(int a){ value1 = a; System.out.println("Inside 2nd Parent Constructor"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); } public static void main(String args[]){ DemoChild d1 = new DemoChild(); d1.display(); } } class DemoChild extends Demo{ int value3; int value4; DemoChild(){ //super(5); value3 = 3; value4 = 4; System.out.println("Inside the Constructor of Child"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); System.out.println("Value1 === "+value3); System.out.println("Value2 === "+value4); } }
ステップ2) コードを実行します。コンストラクタチェーンにより、子クラスのオブジェクトが デモチャイルド コンストラクタが作成されます デモ() 親クラスのコンストラクタが最初に呼び出され、 DemoChild() 子供の走りが次に続く。
期待される出力:
Inside 1st Parent Constructor Inside the Constructor of Child Value1 === 1 Value2 === 2 Value1 === 3 Value2 === 4
ステップ3) 親コンストラクタが デモ() デフォルトで実行されます。オーバーロードされたコンストラクタを呼び出すには デモ(int a) 代わりにキーワードを使用してください "素晴らしい".
構文:
super(); --or-- super(parameter list);
例: 親コンストラクタが次のようになっている場合 デモ(文字列名、整数a)、指定します 素晴らしい("Java」、5)。 使用する場合、キーワード 素晴らしいです 子クラスのコンストラクタの最初のコード行である必要があります。
ステップ4) 26行目のコメントを解除してコードを実行してください。出力結果を確認してください。
出力:
Inside 2nd Parent Constructor Inside the Constructor of Child Value1 === 5 Value2 === 0 Value1 === 3 Value2 === 4

