如何访问"内部变量"来自Java中的对象?

时间:2018-04-29 12:52:04

标签: java oop variables

我想知道如何从Java中的对象访问内部变量(构造后声明的变量)。我尝试了以下代码:

public class test1 {
    public test1(int bigNumber, int smallNumber) {

        int result = bigNumber - smallNumber;

    }
}

class invoke {

    public static void main(String[] args) {

        test1 t1 = new test1(10, 5);
        System.out.println(t1.result); //this was an invalid statement

    }

}

在代码中,语句

System.out.println(t1.result);

无效。为什么我无法检索对象的内部状态?有没有办法做到这一点?

提前致谢。

3 个答案:

答案 0 :(得分:0)

result当前是一个局部变量,只对包含方法的范围可见。相反,将result设为实例变量。

示例:

class test1 {
    int result;
    public test1(int bigNumber, int smallNumber) {
        result = bigNumber - smallNumber;
    }
}

答案 1 :(得分:0)

result未在test1实例的范围内定义 它在test1构造函数的范围内定义 为了能够访问方法或构造函数中的变量,必须将其定义为字段,并且还应提供访问它的方法(以使其成为private字段),例如: / p>

public class test1 {
    private int result;
    public test1(int bigNumber, int smallNumber) {
       result = bigNumber - smallNumber;
    }
    public int getResult(){  
      return result;
    }
}

您可以通过以下方式了解result的访问权限:

test1 t1 = new test1(10, 5);
System.out.println(t1.getResult());

请注意,test1并不尊重Java命名约定 类名必须以大写字母开头:Test1更好。

答案 2 :(得分:0)

System.out.println(t1.result);

上面的语句无效,因为变量result不是实例变量,它是在test1类的构造函数内声明的局部变量,其范围仅限于构造函数,它不能在构造函数外部访问

要访问结果变量,请将其设为实例变量。