如果这是一个新手问题,请原谅,但我需要你的帮助来理解为什么在 main 方法中调用 b.createNumB(1) 会影响 ClassB 中 numB 的变化。
class ClassB {
int numB = 0;
public int getNumB(){
return numB;
}
void createNumB(int num){
numB = num;
}
}
public class ClassA {
ClassB b = new ClassB();
// Returns numB from ClassA
public int returnB(){
return b.getNumB();
}
public static void main(String[]args){
ClassA a = new ClassA();
ClassB b = new ClassB();
//My espectation is that b.createNumB(1) should update numB in ClassA
b.createNumB(1);
System.out.println(a.returnB());
}
}
代码运行时打印0而不是1;请我解释一下是什么 发生在这段代码的后面。谢谢。
最佳答案
这不起作用,因为您正在创建 ClassB
的单独实例。如果您希望它起作用,您必须将实例传递给ClassA
。像这样:
public class ClassA {
ClassB b;
public ClassA(ClassB b){
this.b = b;
}
//...
然后你可以执行ClassA a = new ClassA(b)
。
更改实例的一个值不会影响所有实例。如果您使用static
,您就可以做到这一点。我认为你可以研究static
来自己学习。
关于java - main方法中的这个变量变化不影响上层类的原因是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35259490/