使用不同类中的对象的实例变量

时间:2015-03-31 21:45:18

标签: java class object instance-variables

我使用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;

}

}

2 个答案:

答案 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;

}

}