【ClassPractice05】なぜコンストラクタが必要なのか?
ここまでで、クラスはこう使っていました。
Player p1 = new Player();
p1.Name = "勇者";
p1.Hp = 100;
一見、問題なさそうに見えます。
でも、少し考えてみましょう。
目次
問題:このコードは安全でしょうか?
もし、うっかりこう書いてしまったら?
Player p1 = new Player();
p1.Name = "勇者";
// Hp を設定し忘れた
このとき、Hp はどうなっているでしょうか?
答えは 0 です。
では質問です。
HPが0の勇者は、正しい状態でしょうか?
多くの場合、「最初からHPは決まっていてほしい」はずです。
つまり、
作った瞬間に、正しい状態であってほしい
という要求が出てきます。
これを解決するのが コンストラクタ です。
コンストラクタとは?
簡単に言うと、
オブジェクトが作られるときに必ず実行される特別な処理
です。
① プロジェクトを追加する
- ExtraPractice.sln を開く
- ソリューションを右クリック
- 「追加」→「新しいプロジェクト」
- 「コンソール アプリ」
- プロジェクト名を
ClassPractice05
- 作成
② 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つです。
- クラス名と同じ名前
- 戻り値を書かない
これがコンストラクタです。
④ 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回


ディスカッション
コメント一覧
まだ、コメントがありません