Help us understand the problem. What is going on with this article?

コンストラクタは何のためにある?

More than 1 year has passed since last update.

コンストラクタとは?

インスタンスが生成されるときに自動で実行される特殊なメソッドで
インスタンスの初期状態を自由に操ることが出来る!

と、言ってもピンとこないし実際にコードを実行してみよう。

コンストラクタがないとどうなる?

型ごとのデフォルトが値に入る
たとえば、顧客情報を引き出すプログラムがあったとする。

    //顧客情報を定義
    class CustomerCard {
        int id; //顧客id
        String name; // 顧客名
    }

    class CustomerManager {
        public static void main(String[] args) {
            CustomerCard out = new CustomerCard(); //インスタンス作成
            System.out.println(out.id); //顧客idを出力
            System.out.println(out.name); //顧客名を出力
        }
    }

これを実行すると、結果は以下の通りだ。

0 //顧客id
null //顧客名

なぜこうなるか

クラスをインスタンス化(new)した時に、何の値も入れられていないメンバ変数は、勝手に初期化されるようになっているから。
intなどの数値系の型は0に、boolean型はfalseに、Stringのような参照型はnullに初期化されるというルールがあることを憶えておこう。

コンストラクタを入れてみる

さっきのプログラムにコンストラクタを入れて初期状態を設定して実行してみよう。

    class CustomerCard {
        int id; //顧客id
        String name; // 顧客名

    //**コンストラクタで初期値を設定**
    CustomerCard() {
            this.id = 1111;
            this.name = "taylor";
        }
    }

    class CustomerManager {
        public static void main(String[] args) {
            CustomerCard out = new CustomerCard(); //インスタンス作成
            System.out.println(out.id); //顧客idを出力
            System.out.println(out.name); //顧客名を出力
        }
    }

結果はこうなった。

1111 //顧客id
taylor //顧客名

うん、いい感じにコンストラクタで指定した値が初期値になった。
こんな感じでインスタンスの初期値を設定できるのがコンストラクタってのをざっくり理解しておけるといいかも。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした