所以,我正在制作一个使用2个类的简单程序。
第一节包含:
public class A{
private int x;
public A(){
x = changexvalue(x);
System.out.println(x); //Check value
}
private int changexvalue(int x){
x = x + 2;
return x;
}
public int getxvalue(){
return x;
}
}
第二节包含:
public class B{
public static void main(String [] args){
A a = new A();
System.out.println(a.getxvalue());
}
}
所以,问题是这个。第一个输出(在A类中)打印2但B类输出显示0(我希望B类输出显示2)。这怎么可能,我该如何解决这个问题?
谢谢
答案 0 :(得分:0)
使用this.x
来引用课程'成员变量x
。 x
本身就是指局部变量。
答案 1 :(得分:0)
x
在这里得到了shadowed。您使用两个具有相同名称的变量,因此只有内部变量(此时方法的输入)是可访问的,并且x
无法访问类的属性。
private int changexvalue(int x){
x = x + 2;
return x;
}
替换为
private int changexvalue(int y){
x = y + 2;
return x;
}
或使用this
清楚说明您使用类的x
属性以及使用方法的x
输入变量的位置:
private int changexvalue(int x){
this.x = x + 2;
return this.x;
}