Java 从另一个类访问字段的值
我试图理解变量的范围,以及如何使用从一个类初始化的变量,并在另一个类中使用它们,但接下来我的理解陷入了困境 我有一个类Test1,定义如下:Java 从另一个类访问字段的值,java,Java,我试图理解变量的范围,以及如何使用从一个类初始化的变量,并在另一个类中使用它们,但接下来我的理解陷入了困境 我有一个类Test1,定义如下: public class Test1 { private int x; public int getX() { return x; } public void setX(int x) { this.x = x; } } 我主要是给这个班打电话: 我有另一个类Test2: 如果在
public class Test1 {
private int x;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
我主要是给这个班打电话:
我有另一个类Test2:
如果在main中调用该方法,则val的值显示为0,而不是33。如何在另一个类中访问getX内存中的值
谢谢您看到0的原因是您正在创建Test1的新实例,并在getX调用中引用该实例 为了查看类的现有实例的值,必须将该实例传递到方法中。例如:
public void testing(Test1 instance){
System.out.println(instance.getX());
}
将类视为创建新对象的模型 在主方法中,使用该模型创建新的Test1对象。在测试方法中,使用相同的模具创建新的Test1对象。但是,在您创建的第一个对象中,您将x的值设置为33,但没有对另一个对象执行相同的操作 把它想象成一个篮球。你有一个模子来做篮球,然后用它来做两个篮球。你给第一个篮球打满33%的空气,但不要给第二个篮球注入任何空气。仅仅因为使用了相同的模具,并不意味着两个篮球都能抽到33%的空气
编辑:这是一个很好的视频解释范围,应该可以帮助你 您必须使用静态修改器。私有静态int x;关键是你不明白静态场之间的区别。。。和普通字段。除非字段标记为静态,否则每个对象实例都有自己的副本。考虑一个类比…一辆汽车从装配线驶出。你打开那辆车的后备箱,把手提箱放进去。过了一会儿,另一辆车从装配线滚落。它在各方面都与第一辆车相同。当你打开第二辆车的后备箱时,你希望在那里找到你的手提箱吗?为什么不呢?我不认为这是重复的。duplicate标志回答了代码的另一个问题,但实际上并没有回答提问者的问题。在Test2中创建一个简单的构造函数以接受test1作为参数将回答这个问题。
public class Test2 {
public static void testing() {
Test1 test1 = new Test1();
int val = test1.getX();
System.out.print(val);
}
}
public void testing(Test1 instance){
System.out.println(instance.getX());
}