我写了一个非常小的类[必须增长!]但我突然看到一些“奇怪”的东西。
这是课程:
class Chara{
private boolean flag_loaded;
private boolean flag_rage, flag_shield;
private int int_rage, int_shield;
Chara(String fileName){
flag_loaded = true
if(flag_loaded){
flag_rage = false;
int_rage = 0;
flag_shield = false;
int_shield = 0;
}
}
boolean rage(){return flag_rage;}
boolean shield(){return flag_shield;}
void add_rage(int toAdd){flag_rage = Bool(int_rage += limitMin(toAdd, 0));}
void add_shield(int toAdd){flag_shield = Bool(int_shield += limitMin(toAdd, 0));}
void sub_rage(int toAdd){flag_rage = Bool(int_rage -= limitMin(toAdd, 0));}
void sub_shield(int toAdd){flag_shield = Bool(int_shield -= limitMin(toAdd, 0));}
如您所见,所有变量都设置为private
.
注意:limitMin()
返回相同类型的变量,在这种情况下0
iftoAdd
较低。Bool() 只是一个演员表。
这是一个主要的:
Chara chara = new Chara("lol");
print(chara.int_shield, (chara.shield()) ? COL_GREEN : COL_RED);
print(chara.flag_shield, (chara.shield()) ? COL_GREEN : COL_RED);
在声明、实例和打印之间什么都不做。
这段代码应该以绿色打印盾牌的值以及是否有盾牌,但它不应该打印任何东西,因为int_shield
应该flag_shield
是private
。
结果是一个很好0
的false
红色......
为什么会这样?我做错了什么?
绝望中,我尝试制作变量protected
,但正如我所料,什么也没发生。
编辑:添加了整个 Chara 类。