5 回答


TA貢獻1794條經驗 獲得超8個贊
比如游戲里面一個人的血量,血量最大值1000,最小是0.
假如我們在外界隨意訪問它,修改它,會造成很多的邏輯錯誤。
classs one
private static int blood
public set blood {
if (blood> 1000)
{
blood= 1000;
}
if (blood<0)
{
blood= 0;
}
}
public get blood() {return blood}
主要是把邏輯錯誤處理掉了,這樣的話,外界無法訪問里面的blood變量,只能通過這些set get方法來調用增加血量,減少錯誤,否則外界類直接 blood=blood+10000 blood=blood-150000,這樣造成很多邏輯問題, 這也是封裝的一種方法,大大減少外界邏輯代碼量的判斷,否則你得每次判斷是否大于1000,是否小于0,這樣便于構架設計。
在很多人設計的時候,這種方式就有用處了,一個是防范別人隨意修改引起各種邏輯錯誤,一個減少代碼量。
比如下面的一個類:
class one {
private static int blood
}
import one
class Action {
public setEatPig(){
one.blood=one.blood+100 //這里需要判斷是否大于1000
if (>1000){}
}
public setEatBread(){
one.blood=one.blood+30 //這里需要判斷是否大于1000
if (>1000){}
}
public setHurt(){
one.blood=one.blood-15// 受到傷害,判斷時候小于0
if (<0){}
}
}
進行這些動作
你是不是每步得判斷是否大于1000,小于0? 但是setblood已經限制了這一步

TA貢獻1812條經驗 獲得超5個贊
變量設置private,通過get set方法提供可以讓變量可控,假如有個年齡的變量,直接public的話,別人就有可能把它寫成負值,但如果是提供一個方法,你可以在方法中增加判斷條件,不滿足條件的都不讓修改,程序也就更可控了,尤其是多人協(xié)作的時候,別人不一定知道你的參數(shù)有沒有約束,所以什么情況都有可能發(fā)生
- 5 回答
- 0 關注
- 1071 瀏覽
添加回答
舉報