如何从一个java类中更改另一个java类中的变量,然后从第三个java类中访问更改后的变量?
假设我有3个java类,A、B和C。类A有一个名为num的int变量,它等于3。我希望能够将num从类B更改为另一个数字(例如,45),然后从类C访问该变量,使其等于45。我该怎么做如何从一个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; }
//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());
}
}