0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

java(コンストラクタ)

Last updated at Posted at 2020-05-20

コンストラクの定義方法

①メソッド名がクラス名と完全に等しい
②メソッド宣言に戻り値が記述されていない(voidもダメ)

生まれた直後の動作を定義したHeroクラス

public class Hero {
  String name;
  int hp;
  public Hero() {   //コントラストの定義
    this.hp = 100;  // hpフィールドを100で初期化
  }
}

newされた直後に自動的に実行される処理を書いたメソッド

コストラクタが定義されたHeroを生み出す

public class Main {
  public static void main(String[] args) {
    Hero h = new Hero();      //インスタン生成と同時にHPに100が代入されている
    h.hp = 100;               //いらない

    System.out.println(h.hp); //100と表示される
  }
}

コンストラクタで引数を追加情報として受け取る

public class Hero {
  String name;
  int hp;
  public Hero(String name) {   //引数として文字列を1つ受け取る
    this.hp = 100;             // hpフィールドを100で初期化
    this.name = name;          //引数の値でnameフィールドを初期化
  }
}

newで引数を渡す

public class Main {
  public static void main(String[] args) {
    Hero h = new Hero("勇者");      //インスタン生成後、JVMによって自動的にコンストラクタが実行され、引数として"勇者"が利用される

    System.out.println(h.hp);   //100と表示される
    System.out.println(h.name); //勇者と表示される
  }
}

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

public class Hero {
  String name;
  int hp;
  public Hero(String name) {   //コンストラスタ①           
    this.name = name;          
  }
  public Hero() {              //コンストラクタ②
    this.name = "勇者2"        //"勇者2"を設定
  }
}

コンストラスタをオーバーロードしたクラスの使用

public class Main {
  public static void main(String[] args) {
    Hero h = new Hero("勇者");      //文字列引数があるのでコンストラスタ①が呼び出される
    System.out.println(h.name);    //勇者と表示される

    Hero h2 = new Hero();          //引数がないのでコンストラクタ②が呼び出される
    System.out.println(h2.name);   //勇者2と表示される
  }
}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?