【发布时间】:2015-10-31 09:51:44
【问题描述】:
我创建了 4 个类,一个 MainP 类,以及其他 Ex2、Ex3 和 Ex4(3 和 4 扩展 2)。当我从一个减少另一个对象的 int 变量的对象中调用 a 时,它只会在第一次调用时执行此操作。
这些是类:
Ex2:
protected int par;
public int getPar() {
return par;
}
public void setPar(int par) {
this.par = par;
}
Ex3:
private int par;
public Ex3(int par) {
this.par = par;
}
public void bar(Ex2 b) {
b.setPar(par - 10);
}
public int getPar() {
return par;
}
public void setPar(int par) {
this.par = par;
}
Ex4 与 Ex3 相同。
主要:
public class MainP {
public static void main(String[] args) {
Ex3 kaka = new Ex3(100);
Ex4 tana = new Ex4(100);
kaka.bar(tana);
System.out.println(tana.getPar());
kaka.bar(tana);
System.out.println(tana.getPar());
}
}
输出:
90
90
我不明白为什么par 在第一次通话中减少并在第二次通话中停止。我想它以某种方式进行了校准,但我不明白为什么。
编辑: 好吧,我理解我的愚蠢错误,但我有一个新错误。 我将方法更改为:
public void bar(Ex2 b){
b.setPar(b.par-=10);
}
现在我的输出是:
-10
-20
为什么方法将 b.par 更改为 -10?如果我这样做: tana.setPar(tana.par-=10);在main方法中,将变量更改为public,不会将tana的值更改为-10,而是从100减少。
【问题讨论】:
-
Ex3 中的
bar方法将 Ex2 中par的值设置为 Ex3 中par的结果减去 10。Ex3 中的这个值永远不会改变,因此这两个调用将 Ex2 中的par设置为 90 (100 - 10)。