我使用Shape类创建了一个名为one的对象,我将实例变量x1称为'one',并通过执行int x = one.x1将其设置为int x;它工作正常。但是当我尝试在另一个班级中这样做时,它根本不起作用。当我尝试在另一个类中执行此操作时,会显示一条错误消息,指出“无法解析变量”。如果有人知道什么是错的,以及如何解决这个问题,请告诉我。谢谢。
package events;
public class Shape {
int x1;
int x2;
int y1;
int y2;
int width;
int height;
Shape(int x1, int y1, int width, int height) {
this.x1 = x1;
this.y1 = y1;
this.width = width;
this.height = height;
this.x2 = x1 + width;
this.y2 = y1 + height;
}
public static void main(String[] args){
Shape one = new Shape(4,4,4,4);
int x = one.x1;
}
}
不起作用的代码:
package events;
public class test {
public static void main(String[] args){
int x = one.x1;
}
}
答案 0 :(得分:1)
如果要在外部访问变量,则必须将变量设置为公共public int x1;
。
但是,最好使用getter和setter:
//things
private int x1;
//more stuff
public int getx1(){
return x1;
}
public void setX1(int x){
x1 = x;
}
修改强>:
似乎我错过了问题的重点,要真正回答它,你无法访问定义之外的变量。如果你想在其他地方使用one
,你必须为它创建一个setter,或者在更广泛的范围内定义它。
如果必须,我建议您执行上面显示的操作,定义private Shape one;
然后在主one = new Shape(...)
中设置并为其添加一个getter public Shape getOne(){...}
然后在测试类中,您可以调用getOne()
并访问变量。
答案 1 :(得分:1)
这个有效:
package events;
public class Shape {
int x1;
int x2;
int y1;
int y2;
int width;
int height;
static Shape one = new Shape(4,4,4,4);
Shape(int x1, int y1, int width, int height) {
this.x1 = x1;
this.y1 = y1;
this.width = width;
this.height = height;
this.x2 = x1 + width;
this.y2 = y1 + height;
}
public static void main(String[] args){
int x = one.x1;
}
}
另一个班级:
package events;
public class test {
public static void main(String[] args){
int x = Shape.one.x1;
}
}