我在以正确的方式调用课程时遇到问题。我创建了第二个名为" Questions"我在我的主类下面创建了一个实例,如下所示:
Questions QuestionBank = new Questions ();
我希望将Questions
中的所有变量作为QuestionBank.Score
访问,但是当我执行此操作时,QuestionBank
会以红色突出显示。 Questions.Score
工作正常,但与我使用的说明不符。
有什么想法吗?
提前谢谢。
答案 0 :(得分:2)
Questions.Score工作正常
这可能是因为您已宣布您的分数 静态
public static int Score;
这意味着Score
变量属于Questions类本身,并且只有一个变量。无论您new Questions()
创建新实例多少次,只有一个Score
变量属于Questions
类而不是Questions
类的实例。这解释了为什么您只能Score
而不是Questions.Score
访问QuestionBank.Score
。
要解决此问题,只需删除静态修饰符。
public int Score;
答案 1 :(得分:1)
由于您的问题非常模糊且难以理解,我觉得this可以成为您理解的非常好的理解指南。
让我知道你有任何问题。 :)
答案 2 :(得分:0)
让我说你会这样上课
public class VariableAccessibility {
public static int STATICVARIABLE = 1;
public static final int STATICVARIABLECONSTANT = 1;
int protectedVariable = 1; //protected is default
public int publicVariable = 1;
private int privateVariable = 1;
public int getPrivateVariable() {
return privateVariable;
}
public void setPrivateVariable(int privateVariable) {
this.privateVariable = privateVariable;
}
}
然后你可以/不能做以下
VariableAccessibility varAccess = new VariableAccessibility();
int value = varAccess.publicVariable; //works because its public variable
int staticVariable = varAccess.STATICVARIABLE; //works
int consVar = varAccess.STATICVARIABLECONSTANT; //works, because its static
//int privateVar = varAccess.privateVariable; //not visible
int privateVar = varAccess.getPrivateVariable(); //works, call "getter" will be operating with private class variable
//静态变量值修改 VariableAccessibility.STATICVARIABLE = 5; //你可以做,因为静态但不是最终的 //VariableAccessibility.STATICVARIABLECONSTANT = 5; //无法做到,因为它的最终
基本上,将所有可能标记为private
(使用私有修饰符)并且如果需要,然后创建/生成getter和setter(名称中带有get / set的方法)是一个很好的观点。 / p>
静态和最终有特殊目的: