工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java でのコンストラクターのオーバーロード:概要とプログラム例

Java のコンストラクターとは?

コンストラクタ 新しく作成されたオブジェクトを初期化するために使用される特別なメソッドで、オブジェクトにメモリが割り当てられた直後に呼び出されます。オブジェクトの作成時に、オブジェクトを目的の値またはデフォルト値に初期化するために使用できます。コーダーがクラスのコンストラクターを記述することは必須ではありません。

クラスにユーザー定義のコンストラクターが提供されていない場合、コンパイラーはメンバー変数をデフォルト値に初期化します。

このチュートリアルでは、次のことを学びます-

Java コンストラクターの作成規則

<オール>
  • 同じ名前です クラスとして
  • void 以外の値を返すべきではありません
  • 例 1 :Java で最初のコンストラクターを作成します

    ステップ 1) 次のコンストラクター プログラムを Java エディターに入力します。

    class Demo{
          int  value1;
          int  value2;
          Demo(){
             value1 = 10;
             value2 = 20;
             System.out.println("Inside Constructor");
         }
     
         public void display(){
            System.out.println("Value1 === "+value1);
            System.out.println("Value2 === "+value2);
        }
     
       public static void main(String args[]){
           Demo d1 = new Demo();
          d1.display();
      }
    }

    ステップ 2) Java でコンストラクター プログラムを保存、実行、コンパイルし、出力を確認します。

    出力:

    Inside Constructor
    Value1 === 10
    Value2 === 20
    

    Java でのコンストラクターのオーバーロード

    Java コンストラクターのオーバーロードは、パラメーター リストが異なる任意の数のコンストラクターをクラスに含めることができる手法です。コンパイラは、リスト内のパラメーターの数とその型を考慮して、これらのコンストラクターを区別します。

    クラス Account の有効なコンストラクターの例は

    Account(int a);
    Account (int a,int b);
    Account (String a,int b);
    

    例 2 :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 では、すべてのクラスにデフォルトのコンストラクターがあります。 class Demo のデフォルトのオーバーロード コンストラクタ Java Demo() です .このコンストラクターを提供しない場合、コンパイラーはコンストラクターを作成し、変数をデフォルト値に初期化します。例 1 に示すように、この既定のコンストラクターをオーバーライドして、変数を目的の値に初期化することができます。

    ただし、Demo(int a) のようなパラメーター化されたコンストラクターを指定し、デフォルトのコンストラクター Java Demo() を使用する場合は、それを指定する必要があります。

    つまり、Java のオーバーロード コンストラクターがオーバーライドされ、デフォルトのコンストラクター Java を使用する場合は、Java を指定する必要があります。

    ステップ 5) 行番号 4-8 のコメントを外します。コードを保存、コンパイル、実行します。

    コンストラクターの連鎖

    基底クラスが子によって拡張されるシナリオを考えてみましょう。子クラスのオブジェクトが作成されるたびに、親クラスのコンストラクターが最初に呼び出されます。これはコンストラクタ チェーンと呼ばれます。

    例 3: コンストラクターの連鎖を理解する

    ステップ 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 のオブジェクトが作成されると、親クラスのコンストラクタ Demo() が最初に呼び出され、その後に子クラスのコンストラクタ DemoChild() が作成されます。

    期待される出力 =

    Inside 1st Parent Constructor
    Inside the Constructor of Child
    Value1 === 1
    Value2 === 2
    Value1 === 3
    Value2 === 4
    

    ステップ 3) 親クラス Demo のコンストラクターがオーバーライドされていることがわかります。子オブジェクトの作成時に、デフォルトのコンストラクター Demo() の代わりにオーバーライドされたコンストラクター Demo(int a) を呼び出したい場合はどうしますか?

    このような場合は、キーワード 「super」 を使用できます。 親クラスのオーバーライドされたコンストラクターを呼び出します。

    構文:-

    super();
    --or--
    super(parameter list);
    

    例: コンストラクタが Demo(String Name,int a) のような場合 super(“Java”,5) を指定します .使用する場合、キーワード super をコードの最初の行にする必要があります 子クラスのコンストラクターで。

    ステップ 4) 26 行目のコメントを外して、コードを実行します。出力を観察してください。

    出力:

    Inside 2nd Parent Constructor
    Inside the Constructor of Child
    Value1 === 5
    Value2 === 0
    Value1 === 3
    Value2 === 4

    Java

    1. C# コンストラクターのオーバーロード
    2. Java Hello World プログラム
    3. Java コンストラクター
    4. Java 列挙型コンストラクター
    5. 部分文字列と例を含む Java String indexOf() メソッド
    6. Java String compareTo() メソッド:例での使用方法
    7. Javaの静的変数:静的ブロック&メソッドとは【例】
    8. 素数をチェックする Java プログラム
    9. Java で 1 から 100 までの素数を出力するプログラム
    10. Java で Char を String に変換する方法 (例)
    11. forループを使用したJAVAプログラムのアームストロング数