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的话,别人就有可能把它写成负值,但如果是提供一个方法,你可以在方法中增加判断条件,不满足条件的都不让修改,程序也就更可控了,尤其是多人协作的时候,别人不一定知道你的参数有没有约束,所以什么情况都有可能发生
- 5 回答
- 0 关注
- 1002 浏览
添加回答
举报