コンストラクタについて

コンストラクタとは

コンストラクタとはWeblioによると以下のようである。

クラスにおいて、オブジェクトの生成時に呼び出される特殊な関数。これにより、オブジェクトを使用する前に必要な初期化を行うことができる。

マンガPGのマンガで分かる Java入門講座がわかりやすかった。 https://manga.crocro.com/?cat=java&pg=constructor

以下のブログも参考にした。 https://nobuo-create.net/java-beginner-20/

コンストラクタを使うことでインスタンスの生成と値の設定を一度に行なえる。 コンストラクタの条件は以下のようになる。 * クラス名と同じ名前のメソッドである * 引数を渡せる(初期化などに使う) * 戻り値を定義できない

public class Man{
  String name;
  int length;

  void printMan(){
    System.out.println("名前は"+ this.name + "、身長は" + this.length);
  }
}

// インスタンス呼び出し
Man m = new Man();
m.name = "Bob";
m.length = 175;

コンストラクタを使うとインスタンスの生成と値の設定を一度に行なえる。

public class Man{
  String name;
  int length;

  // 追加(コンストラクタ-クラス名と同じ)
  Man(){
    this.name = "Bob";
    this.length = 175;
  }

  void printMan(){
    System.out.println("名前は"+ this.name + "、身長は" + this.length);
  }
}

Man m = new Man();
m.printMan();    // 名前はBob、身長は175
public class Man{
  String name;
  int length;

  // 変更(引数をとるようにする)
  Man(String name, int length){
    this.name = name;
    this.length = length;
  }

  void printMan(){
    System.out.println("名前は"+ this.name + "、身長は" + this.length);
  }
}

Man m = new Man("Bob", 175);    // 名前はBob、身長は175

オーバーロード オーバーロードを使うことでさまざまな初期化方法を定義できる。

オーバーロードとは同一クラス内でメソッド名が同一で引数の型、数、並び順が異なるメソッドを複数定義することを言います。 http://www.javaroad.jp/java_class8.htm

ただし、引数(型)の個数、順番が全く同じものはダメ。 あと、コンストラクタを自分で定義したら引数なしのコンストラクタは用意されないので注意! 自分で引数なしのものも書かないといけない。

public class Man{
  String name;
  int length;
    
  // 変更(引数をとるようにする)
  Man(String name, int length){
    this.name = name;
    this.length = length;
  }

  void printMan(){
    System.out.println("名前は"+ this.name + "、身長は" + this.length);
  }
}

Man m = new Man("Bob", 175);    // 名前はBob、身長は175