引数が異なるコンストラクタ

広告

メソッドの場合と同様に、引数の数や型が異なるものであれば、1つのクラスの中に複数のコンストラクタを記述できます。

では実際に試してみます。

ctest10.java

class ctest10{
  public static void main(String args[]){
    Television tv1 = new Television("居間");
    tv1.dispChannel();

    Television tv2 = new Television();
    tv2.dispChannel();
  }
}

class Television{
  private int channelNo;
  private String place;

  Television(){
    channelNo = 1;
    place = "未定";
  }

  Television(String newPlace){
    channelNo = 1;
    place = newPlace;
  }

  public void setChannel(int newChannelNo){
    channelNo = newChannelNo;
  }

  public void dispChannel(){
    System.out.println("現在のチャンネルは" + channelNo+ "です");
    System.out.println("設置してある場所は" + place + "です");
  }
}

実際に実行してみると下記のようになります。

p4

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

またコンストラクタから他のコンストラクタを呼び出すこともできます。その場合の記述方法は下記のようになります。

クラス名(){
  this(引数);
}

クラス名(引数){
  ....
}

コンストラクタの中から他のコンストラクタを呼び出す場合には、thisを使って「this(引数)」の形で呼び出します。ここで引数とは呼び出したいコンストラクタで指定されている引数を記述します。

先ほどのサンプルを書き直すと下記のようになります。

class Television{
  private int channelNo;
  private String place;

  Television(){
    this("未定");
  }

  Television(String newPlace){
    channelNo = 1;
    place = newPlace;
  }

  public void setChannel(int newChannelNo){
    channelNo = newChannelNo;
  }

  public void dispChannel(){
    System.out.println("現在のチャンネルは" + channelNo+ "です");
    System.out.println("設置してある場所は" + place + "です");
  }
}

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。