【ClassPractice06】private を使ってデータを守る

これまでの Player クラスはこうでした。

public int Hp;

つまり、

p1.Hp = -999;

のように、外から自由に書き換えられます。

ここで考えてみましょう。

HPがマイナスになるのは正しいですか?

普通はおかしいですよね。

では質問です。

誰でも自由にHPを書き換えられていいのでしょうか?

ここで登場するのが private です。


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

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

② Playerクラスを作る

ClassPractice06 を右クリック

→「追加」→「クラス」

→ Player.cs


③ Player.cs に書く

namespace ClassPractice06
{
    public class Player
    {
        public string Name;
        private int Hp;

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

        public void TakeDamage(int damage)
        {
            Hp = Hp - damage;
        }

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

        public void ShowStatus()
        {
            Console.WriteLine("名前: " + Name);
            Console.WriteLine("HP: " + Hp);
        }
    }
}

変わったところ

private int Hp;

これだけです。


private とは?

今はこれだけ覚えればOKです。

そのクラスの中だけで使える

つまり、

外からは触れません。


④ Program.cs に書く

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

p1.ShowStatus();

p1.TakeDamage(30);

p1.ShowStatus();

試しにこれを書いてみると?

p1.Hp = 500;

エラーになります。

それで正解です。


なぜエラーになるの?

Hp は

private int Hp;

だからです。

外からは見えません。


今日のポイント

✔ private にすると外から触れない

✔ データを守れる

✔ 不正な書き換えを防げる


今はまだやらないこと

  • getter
  • setter
  • プロパティ

それは次の段階です。


まとめ

  • public → 外から触れる
  • private → 外から触れない

これだけ理解できれば十分です。


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