1. 定義:
屬性結合了字段和方法的多個方面。 對于對象的用戶,屬性顯示為字段,訪問該屬性需要相同的語法。 對于類的實現(xiàn)者,屬性是一個或兩個代碼塊,表示一個 get 訪問器和/或一個 set 訪問器。
當讀取屬性時,執(zhí)行 get 訪問器的代碼塊;當向屬性分配一個新值時,執(zhí)行 set 訪問器的代碼塊。
不具有set訪問器的屬性被視為只讀屬性。
不具有 get訪問器的屬性被視為只寫屬性。 同時具有這兩個訪問器的屬性是讀寫屬性。
2. 用途
屬性具有多種用法:
- 它們可在允許更改前驗證數據;
- 當數據被更改時,它們可采取行動,例如引發(fā)事件或更改其他字段的值。
3. 語法
public class Date
{
private int month;
public int Month
{
get
{
return month;
}
set
{
if ((value > 0) && (value < 13))
{
month = value; //value是外界賦的值
}
}
}
}
4. 注意點
屬性可以只寫get塊或set塊。
如果只寫get不寫set,那么就不能再外面賦值了。 如果只寫set不寫get,那么就不能在外界讀取了。
可以給set或者get設置訪問修飾符,來限制調用范圍。
5. 屬性的簡寫方式
public class Date
{
public int Month{get;set;} // 編譯器會自動加上一個month的字段。
}
6 、 練習題
用面向對象的思維去完成下面的題
游戲中,有玩家,每個玩家有昵稱,ID,游戲職業(yè)(法師、戰(zhàn)士、射手。。。),血量,物攻,法傷,物抗,法抗,。
游戲中,還有裝備,裝備有物理防御、法術防御、物理攻擊力,法術攻擊力,血量。 玩家擁有裝備后,可以提升自己的能力。
游戲中,還有多個怪物,怪物有血量,物攻,法傷,物抗,法抗,Boss的法傷,物攻和物抗,法抗,血量比較高,小兵的比較低。
玩家打怪物,怪物打玩家。
血量減少的值等于被攻擊的值減去自身的抗性。
如: 玩家1的物理攻擊是800,法術攻擊是300,怪物的物理防御是600,法術防御是500, 玩家打怪物一下,怪物的血量減少200.
玩家打怪物兩下,怪物打玩家一下,可以多個玩家打一個怪物。
無論是玩家還是怪物,當血量為0的時候則 死亡。
要求游戲職業(yè)定義為枚舉、還要用到構造函數。