0
0

More than 3 years have passed since last update.

Java学習 基礎編 コンストラクタとは?

Posted at

Java学習の備忘録になります。
内容は初心者なので基礎的な部分となります。
Javaに興味がある方やJava学習初心者の参考になれば幸いです。


コンストラクタとは?

前回、インスタンスの生成から、インスタンスフィールドの値をセットする方法あたりを行ってきましたが、このインスタンスフィールドが増えると記述も面倒だし、わかりづらかったりします。

そこで登場するのがコンストラクタです。

詳しく説明すると、クラスにはコンストラクタというものがあり、newを使ってインスタンスを生成した後に自動で呼び出される特別なメソッド。

コンストラクタの定義方法

下記2つの決まりを守ること。

①コンストラクタ名は、クラス名と同じにする
②戻り値を書いてはいけない
(voidも書かない)

Person.java
class クラス名{
  コンストラクタ名() { // コンストラクタ名はクラス名と同じにする
  // インスタンス生成時に行いたい処理
  }
}

■具体例

Main.java
Person person = new Person();

// 出力結果
インスタンスが生成されました
Person.java
class Person{
  public String name;
  Person() { // インスタンス生成時に行われる処理
    System.out.println("インスタンスが生成されました");
  }
}

インスタンスフィールドの値セットを楽にする

下記のよな場合に、newでインスタンス生成した後に、自動で実行されるコンストラクタの中で、各フィールドに値をセットするようにする。

Main.java
Person person = new Person();
Person.name = "Sasaki"; // 下記コンストラクタ内でセットしたい
Person.java
class Person{
  public String name;
  Person() { 
    // ここでセットしたいのよ
  }
}
コンストラクタに情報を渡す

newでインスタンスを生成する際に、new クラス名( )( )には引数を渡すことができる。そして、その引数は直後に呼び出されるコンストラクタに受け渡される。

下記のように、インスタンスを生成する際に、インスタンスフィールドにセットしたい値 ("Sasaki")を引数に渡し、コンストラクタでセットするよにする。
コンストラクタ内でもthisを用いてインスタンスを利用することができる。
thisについては後ほど解説

Main.java
Person person = new Person("Sasaki");
System.out.println(person.name);

// 出力結果
Sasaki
Person.java
class Person{
  public String name;
  Person(String name) { // String型 "Sasaki"を受け取る
    this.name = name; // インスタンスフィールドnameへ"Sasaki"をセット
  }
}

thisとは?

※はじめに、今回は長くなってしまうので詳しくは別記事で投稿したいと思います。

thisとは、メソッド内でインスタンスフィールドにアクセスするために用いる特殊な変数のこと。
thisは、クラス内のメソッドの定義の中でのみ使用できる。
thisは、メソッドが呼ばれたときに、そのメソッドを呼び出しているインスタンスに置き換えられる。

■具体例

Main.java
Person person = new Person("Sasaki");
person.name = "Sasaki";
person.hello();

// 出力結果
こんにちはわたしはSasakiです
Person.java
class Person{
  public String name;
  public void hello() {
    System.out.println("こんにちは、わたしは" + this.name + "です");
  }
}

おわりに

ちょっと複雑になってきましたが、確実に理解し使えるようにしていきたいですね。
なお、ご指摘などございましたら、遠慮なくお願いいたします!!

0
0
3

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