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

如何从一个java类中更改另一个java类中的变量,然后从第三个java类中访问更改后的变量?,java,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; }

假设我有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,但是C类中的print语句仍然输出3,即使我在类B中将num的值更改为45。

这是因为在
C
类中,您再次创建了
a
的新实例。所以这个值应该是
3
。您可以更改构造函数并这样调用它

public A(int value) {
    num = value;
}

new Post(45);

这样,当您创建一个实例时,您可以根据自己的意愿从任何
类中为num赋值,这是因为在
C
类中,您再次创建了
a
的新实例。所以这个值应该是
3
。您可以更改构造函数并这样调用它

public A(int value) {
    num = value;
}

new Post(45);

这样,当您创建一个实例时,您可以根据需要从任何

向num分配一个值。您无法获得所需结果的原因是,您已经在类
C
中创建了类
a
的新实例,并且它有自己的值,即
3
。更改在类
B
中定义的类
A
实例的值不会影响此新实例

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

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

//First Class
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(a);
}
}

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

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

无法获得所需结果的原因是,您已在类
C
中创建了类
a
的新实例,并且它有自己的值,即
3
。更改在类
B
中定义的类
A
实例的值不会影响此新实例

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

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

//First Class
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(a);
}
}

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

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