【こんすとらくた】

コンストラクタ とは?

💡 オブジェクト誕生の「開店準備」
📌 このページのポイント
ひよこ ひよこ

コンストラクタって何?普通のメソッドと何が違うの?

ペンギン先生 ペンギン先生

お店の開店準備を思い浮かべてみて。お客さんが来る前に「電気をつける・レジを起動する・看板を出す」という準備をするよね。コンストラクタはまさにその準備係で、オブジェクトが作られた瞬間に自動で動いて初期設定をしてくれるんだよ。

ひよこ ひよこ

普通のメソッド初期化できるんじゃないの?わざわざコンストラクタが必要な理由は?

ペンギン先生 ペンギン先生

普通のメソッドは「呼ばないと動かない」んだ。コンストラクタは呼び忘れがなくて必ず実行されるのが強みだよ。「初期化し忘れた!」というバグを防げるんだ。

ひよこ ひよこ

コンストラクタに引数って渡せるの?

ペンギン先生 ペンギン先生

渡せるよ!たとえば「User("Ken", 30)」みたいに名前と年齢を渡して、最初から値がセットされた状態のオブジェクトを作れるんだ。毎回後から値を入れる手間が省けて便利だよ。

ひよこ ひよこ

コンストラクタを定義しなかったらどうなるの?

ペンギン先生 ペンギン先生

多くの言語では「デフォルトコンストラクタ」が自動で用意されるよ。何もしない空っぽの初期化が走るイメージだね。ただ引数を受け取る独自のコンストラクタを1つでも書くと、デフォルトコンストラクタが消える言語もあって、「なんか動かない」と詰まるポイントになるんだ。

ひよこ ひよこ

コンストラクタが複数あることもあるって聞いたけど?

ペンギン先生 ペンギン先生

「オーバーロード」といって、同じ名前で引数の数や型が違うコンストラクタを複数定義できる言語があるんだ。「引数なし」「名前だけ」「名前と年齢の両方」みたいに使い分けられるんだけど、どのコンストラクタが呼ばれているか把握できなくなって混乱するのがベテランでも引っかかるポイントで、特に継承先でsuper()を正しく呼ぶ順序を間違えてハマる人は多いよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「コンストラクタ」って出てきたら「オブジェクトが生まれた瞬間に自動で走る初期化の処理だな」と思えればだいたいOK!
📖 おまけ:英語の意味
「constructor」 = 構築するもの・組み立てるもの
💬 constructは「建設する」という動詞。オブジェクトを建設するときの段取り係がコンストラクタだよ
← 用語集にもどる