【Aモデル録 フェーズ1 C#基礎】
👉 コンストラクタとは、「インスタンスが生成された直後に、最初に1回だけ必ず実行される処理」 です。
👉 「実体の存在が成立するための、最低ルールを整える場所」
| 種類 | 宣言書式 | 例 | 命名規則 | 覚え方 |
|---|---|---|---|---|
| コンストラクタ | アクセス修飾子 クラス名(引数…) | public User(string name) | PascalCase | 係は部と同じ名前 |
今はこれだけ覚えておきましょう。
クラス名と 同じ名前
戻り値は 書かない
対象となるインスタンスがnew された瞬間に 必ず1回実行
初期設定専用
これまでの対応関係を整理します。
| プログラム | 会社イメージ |
|---|---|
| クラス | 部署(製造部など)の定義 |
| インスタンス | 部署の”実体” |
| フィールド | 部署が持つ情報(名前・IDなど) |
| メソッド | 仕事のマニュアル |
| コンストラクタ | 配属時の初期設定 |
👉 コンストラクタとは、「社員が配属された瞬間に、必ず行われる初期手続き」 です。
名前やIDを部署に登録する
作業場やPCを用意する
もしコンストラクタがなかったら…
社員が配属された
でも名前が未登録
IDも空
配属時の指導状態がバラバラ
👉 「存在はしているが、使い物にならない社員」 が生まれる。
だから、
「インスタンスが作られた瞬間に、最低限の初期状態を保証する」
ために、コンストラクタがある。
class SeizoBu
{
public string Name; //これはフィールド
// コンストラクタ
public SeizoBu(string name)
{
Name = name;
}
}
上の最小コードが整った後、Mainでインスタンスを生成します。
SeizoBu a = new SeizoBu("田中");
この1行で、
製造部インスタンスが立ち上がり
その製造部に、社員が新規で配置されることを受けて
同時にコンストラクタが自動実行され
Name に「田中」が登録される
👉 メソッドのような呼び出しは不要で、自動で処理が実行される
これがコンストラクタ最大の特徴。
ポイントだけ抜き出して並べると
👉「Name」と「name」は理由があるので、個別に存在している
ということが、よく分かります。
public string Name; //フィールドで「Name」を定義
Name = name; //コンストラクタ内で関連付け
👉コンストラクタ内で関連付けをするのがポイント
SeizoBu(string name) //コンストラクタ「ここでnameを受け取る」と明示する
SeizoBu("田中") //インスタンス生成時「nameは、田中」だと指令を出す
👉( )内の、「string name」と、「田中」は対応している
👉 それは「順序と責任」が見え始めた証拠です。
これまでの回は、
書いたら動く
置いたら使える
という世界でした。
でもコンストラクタは、
「使っていい状態を、先に保証しろ」
「存在の成立条件を、コードで明示しろ」
という、一段上のルールを強制してきます。
データが壊れたインスタンスを作る危険を回避する
使う前提が揃っている
後から見ても「何が必要な存在か」分かる
全部、後工程の安心材料です。
今はムカつく。
でも後で、
「あ、これコンストラクタで決めてたわ…助かった…」
って、必ず言います。
インスタンス生成
↓
コンストラクタ実行(初期化)
↓
フィールドが安全な状態になる
↓
メソッドが安心して使える
👉 順番が超大事
この段階では:
コンストラクタは
👉 インスタンス生成時の初期処理
自分で呼ばない
👉 自動で1回だけ動く
フィールドを
👉 使える状態に整える
これが分かれば十分です。
次は自然に、
「フィールドはどこに保存されてる?」
「どうやって作業員(インスタンス)ごとに違う情報を持てるの?」
という疑問が出てきます。
それを解消するのが、「参照」です。