Java 为什么可以';我不能在任何方法之外修改类成员变量吗?
我有一个带有一些变量的类。当我在主类中实例化该类的对象时。我只能访问和修改方法中的成员变量,任何方法;不在他们之外。为什么呢?我被卡住了,似乎在谷歌上找不到答案Java 为什么可以';我不能在任何方法之外修改类成员变量吗?,java,member,Java,Member,我有一个带有一些变量的类。当我在主类中实例化该类的对象时。我只能访问和修改方法中的成员变量,任何方法;不在他们之外。为什么呢?我被卡住了,似乎在谷歌上找不到答案 class SomeVariables{ String s; int dontneed; } class MainClass{ SomeVariables vars= new SomeVariables(); vars.s = "why this doesnt work?. IDE says Uknow
class SomeVariables{
String s;
int dontneed;
}
class MainClass{
SomeVariables vars= new SomeVariables();
vars.s = "why this doesnt work?. IDE says Uknown class 'vars.s'";
System.out.println(vars.s); // Accesing it also doesnt work
void ChangeValue(){
vars.s = "why does this work?";
}
public static void main(String[]args){
}
}
我还尝试了访问说明符,得到了相同的结果这里是一个超级简化的答案,如果您想了解更多详细信息,只需添加一条注释;)
这是一个超级简化的答案,如果您想了解更多详细信息,只需添加一条注释;)
它不起作用,因为您在构造函数或Method之外定义的实例不是有效的Java语法 一个可能的解决办法是:
class SomeVariables {
String s;
int dontneed;
}
class MainClass {
public static void main(String[]args){
SomeVariables vars = new SomeVariables();
vars.s = "why this doesnt work?. IDE says Uknown class 'vars.s'";
System.out.println(vars.s);
}
}
但您可能需要考虑对类变量的保护,例如使代码“> SomeVariables < /代码>的所有属性,并使用<代码> SETESTS 和<代码> GETStuts<代码>方法来获取和修改类本身中的值。例如:
class SomeVariables {
private String s;
private int dontneed;
// Constructor method
public SomeVariables() {
// Initialize your attributes
}
public String getValue() {
return s;
}
public void setValue(String value) {
s = value;
}
}
class MainClass {
public static void main(String[]args){
SomeVariables vars = new SomeVariables();
vars.setValue("Some value");
System.out.println(vars.getValue());
}
}
它不起作用,因为您在构造函数或Method之外定义的实例不是有效的Java语法 一个可能的解决办法是:
class SomeVariables {
String s;
int dontneed;
}
class MainClass {
public static void main(String[]args){
SomeVariables vars = new SomeVariables();
vars.s = "why this doesnt work?. IDE says Uknown class 'vars.s'";
System.out.println(vars.s);
}
}
但您可能需要考虑对类变量的保护,例如使代码“> SomeVariables < /代码>的所有属性,并使用<代码> SETESTS 和<代码> GETStuts<代码>方法来获取和修改类本身中的值。例如:
class SomeVariables {
private String s;
private int dontneed;
// Constructor method
public SomeVariables() {
// Initialize your attributes
}
public String getValue() {
return s;
}
public void setValue(String value) {
s = value;
}
}
class MainClass {
public static void main(String[]args){
SomeVariables vars = new SomeVariables();
vars.setValue("Some value");
System.out.println(vars.getValue());
}
}
在java中,语句必须在代码块(方法、构造函数、静态或实例初始化块)中,而不是在类的主体中。我是新来的java@ernest_k既然这是一个答案,你为什么不把它作为一个答案发布呢?@KyleWilliamson,因为他投票支持“接近重复”。在java中,语句必须在代码块(方法、构造函数、静态或实例初始化块)中,而不是在类的主体中。我是新来的java@ernest_k既然这是一个答案,你为什么不把它作为一个答案发布呢?@KyleWilliamson,因为他投票支持“接近重复”。见梅塔。