我想知道如何从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);
无效。为什么我无法检索对象的内部状态?有没有办法做到这一点?
提前致谢。
答案 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
类的构造函数内声明的局部变量,其范围仅限于构造函数,它不能在构造函数外部访问
要访问结果变量,请将其设为实例变量。