學習重點:
- 封裝性 - 隱藏內部的實作細節,只提供介面供大家使用
- 緊密(tightly)封裝 - 把物件中所有的變數設成private,只提供public方法供操作
- 封裝性的好處 - 可保護物件內的變數,使用者只要會用就好
- public - 任何人可以隨意觀看,使用或修改的事物
- private - 只有自己可以觀看,使用或修改的事物 (通常用於宣告不想被修改的屬性)
- 利用 private 宣告該類別的屬性或方法,則只在該類別內有權限操作此屬性或方法
- get的程式碼會在嘗試取得變數內容時呼叫
- set的程式碼會在嘗試存入數值時呼叫
- get與set存取器可以讓一些計算用變數的方式呈現
- 為了防止一些意外操作可將變數設為private,並且利用method當作中介,或是利用get與set
主程式 :
private void button1_Click(object sender, EventArgs e)
{
User s = new User("小王","123",100);
string result = "";
if
(s.ComparePassWord(text_password.Text)) result = "密碼正確";
else result = "密碼錯誤";
s.HP = 80;
MessageBox.Show("帳號名稱:" + s.GetName() + "-" + result+"\n"
+"HP:"+ s.HP + "\n"
+ "Money:" + s.Money);
}
User 類別 :
class User
{
private string Name;
private string Password;
private int hp;
private int coin1, coin5, coin10;
public int Money
{
get { return coin1 * 1 + coin5
* 5 + coin10 * 10; }
}
public int HP
{
get { return hp; } //在讀取HP時自動呼叫
set //在存入數值時自動呼叫
{
if (value < 0) HP = 0;
else hp = value;
}
}
public void hurt(int decreaseHP)
{
if (hp >= decreaseHP) hp -=
decreaseHP;
else hp = 0;
}
public int GetHP()
{
return hp;
}
public User(string Name, string Password, int HP)
{
this.Name = Name;
this.Password =
Password;
this.hp = HP;
this.coin1 = 1;
this.coin5 = 1;
this.coin10 = 1;
}
public bool ComparePassWord(string password)
{
if(this.Password ==
password) return true;
else return false;
}
public string GetName()
{
return Name;
}
}
執行結果:
沒有留言:
張貼留言