スポンサードリンク
HOME > Java > クラス機能 コンストラクタの多重定義(オーバーロード)

Java - クラス機能 コンストラクタの多重定義(オーバーロード)

コンストラクタは、メンバ関数のように多重定義(オーバーロード)が可能です。

メンバ関数の多重定義(オーバーロード)についてはコチラ

ファイル名:Cmain.java
public class Cmain {

   public static void main(String[] args) {
      // 引数なしのコンストラクタ呼び出し
      Cdata obj = new Cdata();

      // 引数が1つののコンストラクタ呼び出し
      Cdata obj1 = new Cdata(10);

      // 引数が2つののコンストラクタ呼び出し
      Cdata obj2 = new Cdata(10, 50);

      // 引数が3つののコンストラクタ呼び出し
      Cdata obj3 = new Cdata(10, 50, 100);
   }
}

class Cdata {

   public int a;
   public int b;
   public int c;

   // コンストラクタ
   public
Cdata() {
      a = 0;
      b = 0;
      c = 0;
   }

   // 引数が1つのコンストラクタ
   public
Cdata(int data1) {
      a = data1;
      b = 0;
      c = 0;
   }

   // 引数が2つのコンストラクタ
   public
Cdata(int data1, int data2) {
      a = data1;
      b = data2;
      c = 0;
   }

   // 引数が3つのコンストラクタ
   public
Cdata(int data1, int data2, int data3) {
      a = data1;
      b = data2;
      c = data3;
   }
}


この例では、クラスCdataのコンストラクタを複数作成した例です。

それぞれ、引数なし、引数1,2,3個のコンストラクタが

多重定義(オーバーロード)されています。

それぞれのコンストラクタの呼び出し方は、実際にクラスのインスタンスを作る時に、

インスタンス名の後ろにカッコをつけて、関数のように引数を記述します。

引数を指定しなかった場合、引数なしのコンストラクタが呼び出されます。

引数を1つ指定した場合は、引数1個のコンストラクタが呼び出されます。

それぞれ2個、3個の場合も同様。



コンストラクタ内から別のコンストラクタを呼び出す

上記の例では、似たような処理を4つのコンストラクタで記述しましたが、

もう少し短く記述する事が可能です。

そのためには、コンストラクタ内から別のコンストラクタを呼び出します。

ファイル名:Cmain.java
public class Cmain {

   public static void main(String[] args) {
      // 引数なしのコンストラクタ呼び出し
      Cdata obj = new Cdata();

      // 引数が1つののコンストラクタ呼び出し
      Cdata obj1 = new Cdata(10);

      // 引数が2つののコンストラクタ呼び出し
      Cdata obj2 = new Cdata(10, 50);

      // 引数が3つののコンストラクタ呼び出し
      Cdata obj3 = new Cdata(10, 50, 100);
   }
}

class Cdata {

   public int a;
   public int b;
   public int c;

   // コンストラクタ
   public Cdata() {
      
this(0, 0, 0); // 引数3つのコンストラクタ呼び出し
   }

   // 引数が1つのコンストラクタ
   public Cdata(int data1) {
      
this(data1, 0, 0);
   }

   // 引数が2つのコンストラクタ
   public Cdata(int data1, int data2) {
      
this(data1, data2, 0);
   }

   // 引数が3つのコンストラクタ
   public Cdata(int data1, int data2, int data3) {
      a = data1;
      b = data2;
      c = data3;
   }
}


このプログラム例では、コンストラクタ内で別のコンストラクタを呼び出した例です。

別のコンストラクタを呼び出すには、this();のように記述します。

thisは、自分自身を指す参照を表すので、こう言った記述が可能になります。

コンストラクタ内で重複した記述が目立つ場合には有効な記述方法ですので、

ぜひ、活用して下さい。

 ただし、このthisを使ったコンストラクタの呼び出しは、

コンストラクタの先頭行に記述しなくてはならない。というJava言語のルールが

ありますので、注意して下さい。



スポンサードリンク







HOME

言語解説編
プログラミング用語・知識

C言語

C++言語

Java

C#

Visual Basic.NET

アプリケーション編
C言語による
コンソールプログラミング




Copyright (C) プログラミングランド All Rights Reserved