为什么我不能在任何方法之外修改类成员变量?

时间:2018-12-07 19:05:19

标签: java member

我有一个带有一些变量的类。当我在主类中实例化该类的对象时。我只能访问和修改一个方法(任何方法)中的成员变量;不在他们外面。这是为什么?我被困住了,似乎无法在Google上找到答案。

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){
    }
}

我还尝试了访问说明符并获得了相同的结果

2 个答案:

答案 0 :(得分:1)

这是一个超级简化的答案,如果您想获得更多详细信息,请添加评论;)

eval(process.env.NODE_ENV)

答案 1 :(得分:1)

它不起作用,因为您是在无效的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并使用settersgetters方法来获取和修改类本身中的值。例如:

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());
    }
}