Available private variables
本问题已经有最佳答案,请猛点这里访问。
我写了一个非常小的班级[必须成长!]但我突然看到一些"奇怪"的东西。
这是课程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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));} |
如您所见,所有变量都设置为
注:
这是一个主要部分:
1 2 3 | 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); |
声明、实例和打印之间不做任何操作。
这段代码应该以绿色打印防护罩的值,如果有或没有防护罩,但它不应该打印任何东西,因为
结果是一个漂亮的
为什么会这样?我做错什么了?
在绝望中,我试图使变量
编辑:添加了整个chara类。
您的
允许内部/嵌套类访问封闭类的私有变量,反之亦然。(至少从"访问"规则的角度来看是允许的。还有各种其他规则可以阻止/限制这种情况。)
我敢肯定这里没有"不明确的行为"。只是你不理解的行为。
如果这不能解释行为,我不理解您的问题/您的代码实际上是什么样子的。如果您需要进一步的帮助,请用SSCCE替换您问题的代码段。