好基本上我有三个班级:
在我要做的主要课程中:
Apple apple = new Apple(String one, String two);
然后Apple类在全球范围内设置它们:
public Apple()
{
//empty constructor
}
public Apple(String one, String two)
{
this.one = one;
this.two = two;
}
然后在Pie课程中我做了:
Apple apple = new Apple();
然后,如果我尝试从Pie类中访问变量'one'或'two',它们将返回null。有人能帮我吗?
答案 0 :(得分:9)
您正在创建两个不同的对象。如果您希望所有Apple对象具有相同的参数,请将它们声明为static
。否则行为是正确的。
更具体地说,您在主类中创建的apple
将在其参数中具有所需的值。第二个apple
,在Pie
类中创建(它是不同的对象,即Apple类的另一个实例),因为它是在没有任何参数的情况下构造的,将调用默认构造函数(即public Apple()
),并且值将返回null。
要查看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);
打印:
10 5
但如果是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);
输出将是:
5 5
有关何时使用 static 的更多信息,请查看:
答案 1 :(得分:0)
因此Apple
类中的Pie
与您在Main
中创建的不同的Apple 相同。因此,当您调用空构造函数时,one
和two
未在您的饼Apple
中设置,而它们位于主Apple
中。如果你真的希望它们是相同的,请尝试从Pie中引用main Apple
,或使Apple
为静态。