【ClassPractice05】なぜコンストラクタが必要なのか?

ここまでで、クラスはこう使っていました。

Player p1 = new Player();
p1.Name = "勇者";
p1.Hp = 100;

一見、問題なさそうに見えます。

でも、少し考えてみましょう。


問題:このコードは安全でしょうか?

もし、うっかりこう書いてしまったら?

Player p1 = new Player();
p1.Name = "勇者";
// Hp を設定し忘れた

このとき、Hp はどうなっているでしょうか?

答えは 0 です。

では質問です。

HPが0の勇者は、正しい状態でしょうか?

多くの場合、「最初からHPは決まっていてほしい」はずです。

つまり、

作った瞬間に、正しい状態であってほしい

という要求が出てきます。

これを解決するのが コンストラクタ です。


コンストラクタとは?

簡単に言うと、

オブジェクトが作られるときに必ず実行される特別な処理

です。


① プロジェクトを追加する

  1. ExtraPractice.sln を開く
  2. ソリューションを右クリック
  3. 「追加」→「新しいプロジェクト」
  4. 「コンソール アプリ」
  5. プロジェクト名を
ClassPractice05
  1. 作成

② Playerクラスを作る

ClassPractice05 を右クリック

→「追加」→「クラス」

→ Player.cs


③ Player.cs に書く

namespace ClassPractice05
{
    public class Player
    {
        public string Name;
        public int Hp;

        public Player(string name, int hp)
        {
            Name = name;
            Hp = hp;
        }

        public bool IsAlive()
        {
            return Hp > 0;
        }
    }
}

ここがコンストラクタ

public Player(string name, int hp)

ポイントは2つです。

  1. クラス名と同じ名前
  2. 戻り値を書かない

これがコンストラクタです。


④ Program.cs に書く

Player p1 = new Player("勇者", 100);

Console.WriteLine(p1.Name);
Console.WriteLine(p1.Hp);

F5で実行

結果:

勇者
100

何が変わったのか?

以前は:

  • 作る
  • あとから値を入れる

でした。

今回は:

  • 作ると同時に完成する

になりました。


なぜコンストラクタが大事なのか?

コンストラクタを使うと、

✔ 設定忘れがなくなる

✔ 不完全な状態を防げる

✔ 安全な設計になる

つまり、

オブジェクトを「正しく作る」ための仕組み

です。


今日のゴール

✔ コンストラクタを書けた

✔ new の意味が深まった

✔ 作成と同時に初期化できた


まとめ

これまでの流れ:

  • ClassPractice01 → データ
  • ClassPractice02 → 処理
  • ClassPractice03 → 引数
  • ClassPractice04 → 戻り値
  • ClassPractice05 → コンストラクタ

ここまで来ると、

「なんとなく書いている」状態から

「設計している」状態に一歩近づきます。


訪問数 4 回, 今日の訪問数 1回