use*_*898 5 java variables methods class overwrite
可以说我有3类:A,Data,和B
我从类中传递一个变量,A该变量将传递的变量设置为类中的私有变量Data.
然后在课堂上B,我想调用已经改变的特定变量.
所以我这样做
Data data = new Data();
data.getVariable();
Run Code Online (Sandbox Code Playgroud)
然后它将返回null,因为在类DataI 中将变量初始化为空(ex :) int v;,我认为该类B正在初始化一个全新的类并将值重置为默认值,但我不知道如何解决这个问题.
我知道变量设置正确,因为在课堂上A如果我这样做data.getVariable()将打印设置的变量.
课程A:
Data data = new Data();
int d = 1;
data.setVariable(d);
Run Code Online (Sandbox Code Playgroud)
课程Data:
private static int b;
public void setVariable(int s)
{
b = s;
}
public int getVariable()
{
return b;
}
Run Code Online (Sandbox Code Playgroud)
课程B:
Data data = new Data();
private int v;
v = data.getVariable();
System.out.println(v);
Run Code Online (Sandbox Code Playgroud)
这将打印出0而不是实际值
Jon*_*uis 11
当你实例化一个DataA类对象,实例化另一个Data在B类对象,它们是两个不同的实例中的Data类.它们d默认情况下都实例化为0.然后setVariable,您调用A类中的实例并将值传递给1; 但是B类中的实例保持为0.为了更改B类中实例的值,您需要调用setVariableB类中的实例.
您正在寻找的是静态成员.静态成员在同一个类的所有实例中都是相同的.只需将static关键字放在要使用它的方法或字段之前.通常使用声明它们的类的名称(即MyClass.doMethod())访问静态成员和字段.例如:
班级数据(更新):
private static int b;
public static void setVariable(int s)
{
b = s;
}
public static int getVariable()
{
return b;
}
Run Code Online (Sandbox Code Playgroud)
A类:
Data.setVariable(d);
Run Code Online (Sandbox Code Playgroud)
B级:
v = Data.getVariable();
System.out.println(v);
Run Code Online (Sandbox Code Playgroud)