如何在一个Java类中更改另一个Java类中的变量,然后从第三个Java类访问该更改的变量?

时间:2018-12-23 06:53:27

标签: java

所以说我有3个Java类,即A,B和C。类A有一个名为num的int变量等于3。我希望能够将num从类B更改为另一个数字(例如45)。 ,然后从C类访问该变量,使其等于45。我该怎么做?

//First Class
public class A
{
    public int num;

    public A() {
        num = 3;
    }

    public void setNum(int newNum) {
        num = newNum;
    }

    public int getNum() {
        return num;
    }
}

//Second Class
public class B
{
    public static void main(String[] args) {
        A a = new A();
        C c = new C();

        System.out.println(a.getNum());

        a.setNum(45);

        System.out.println(a.getNum());

        c.printStuff();
    }
}

//Third Class
public class C
{
    public void printStuff() {
        A a = new A();

        System.out.println(a.getNum());
    }
}

前两个print语句输出预期的3和45,但是即使我在B类中将num的值更改为45,C类中的print语句仍输出3。

2 个答案:

答案 0 :(得分:2)

无法获得所需结果的原因是,您在类<input type="submit"> 中创建了类A的新实例,并且它有自己的值{{1 }}。更改在类C中定义的类3的实例的值将不会影响此新实例。

请注意,您在类A上调用了B方法两次,因此有两个单独的实例。

您可以尝试以下代码以获得所需的结果:

new

答案 1 :(得分:0)

之所以会这样,是因为您在 import set from 'lodash/set' let path = 'foo-num'; const paths = path.split('-').join('.') const value = 'some value'; set(object, paths, value) C中再次创建了class的新实例。因此该值为A。您可以更改构造函数并这样调用它,

3

通过这种方式,在创建实例时,您可以根据需要从任意public A(int value) { num = value; } new Post(45); 中为num分配一个值。