好基本上我有三个班:
在我要做的主要课程中:
Apple apple = new Apple(String one, String two);
Run Code Online (Sandbox Code Playgroud)
然后Apple类在全球范围内设置它们:
public Apple()
{
//empty constructor
}
public Apple(String one, String two)
{
this.one = one;
this.two = two;
}
Run Code Online (Sandbox Code Playgroud)
然后在Pie类我做:
Apple apple = new Apple();
Run Code Online (Sandbox Code Playgroud)
然后,如果我尝试从Pie类中访问变量'one'或'two',它们将返回null.有人能帮我吗?
您正在创建两个不同的对象.如果您希望所有Apple对象具有相同的参数,请将它们声明为static.否则行为是正确的.
更具体地说,apple您在主类中创建的将在其参数中具有所需的值.第二个apple是在Pie类中创建的(它是一个不同的对象,即Apple类的另一个实例),因为它是在没有任何参数的情况下构造的,所以public Apple()将调用默认构造函数(ie ),并且值将返回null.
要查看a static和non-static变量之间的区别,请执行以下操作:
class Apple {
int var;
}
Apple apple1 = new Apple();
apple1.var = 10;
Apple apple2 = new Apple();
apple2.var = 5;
System.out.println(apple1.var+"\t"+apple2.var);
Run Code Online (Sandbox Code Playgroud)
打印:
10 5
Run Code Online (Sandbox Code Playgroud)
但如果它是static你会得到的
class Apple {
static int var;
}
Apple apple1 = new Apple();
apple1.var = 10;
Apple apple2 = new Apple();
apple2.var = 5;
System.out.println(apple1.var+"\t"+apple2.var);
Run Code Online (Sandbox Code Playgroud)
输出将是:
5 5
Run Code Online (Sandbox Code Playgroud)
有关何时使用静态的更多信息,请查看: