【ClassPractice10】プロパティを使ってみよう
今のクラスはこうなっています。
public int GetHp()
{
return Hp;
}
Program.cs ではこう書いています。
Console.WriteLine(p1.GetHp());
少し考えてみましょう。
Hp は「データ」です。
でも、
メソッドの形で取りに行っている
少し違和感があります。
目次
解決方法
メソッドのように安全で、
変数のように書ける仕組み
これが プロパティ です。
① プロジェクトを追加する
- ExtraPractice.sln を開く
- 右クリック → 「追加」→「新しいプロジェクト」
- 「コンソール アプリ」
- プロジェクト名
ClassPractice10
- 作成
② Playerクラスを書く
namespace ClassPractice10
{
public class Player
{
public string Name;
private int Hp;
private int MaxHp;
public Player(string name, int maxHp)
{
Name = name;
MaxHp = maxHp;
Hp = maxHp;
}
public void TakeDamage(int damage)
{
Hp -= damage;
if (Hp < 0)
{
Hp = 0;
}
}
public void Heal(int amount)
{
Hp += amount;
if (Hp > MaxHp)
{
Hp = MaxHp;
}
}
public int CurrentHp
{
get { return Hp; }
}
}
}
ここがプロパティ
public int CurrentHp
{
get { return Hp; }
}
見た目は変数のようですが、
中身は処理です。
③ Program.cs
Player p1 = new Player("勇者", 100);
Console.WriteLine(p1.CurrentHp);
p1.TakeDamage(30);
Console.WriteLine(p1.CurrentHp);
実行結果
100
70
何が変わったのか?
以前:
p1.GetHp();
今:
p1.CurrentHp
変数のように書けます。
でも、
- Hp は private のまま
- 外から直接触れない
安全性は保たれています。
今日のポイント
✔ プロパティは「変数のように使える」
✔ 中身は処理
✔ 安全性はそのまま
まとめ
- private で守る
- メソッドで公開する
- プロパティで自然に公開する
ここまで来ると、
C#らしい書き方に入っています。
訪問数 3 回, 今日の訪問数 3回



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