[英]Why we can't declare variables in class constructor in java?
如果构造函数是在 object 创建时隐式调用的函数,那么我们应该在构造函数中声明变量,但它会给出错误。
class A{
public A(){
int a =5;
}
}
public class assignment2 {
public static void main(String[] args) {
A obj = new A();
System.out.println(obj.a);
}
}
错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
a cannot be resolved or is not a field
at ass2.main(ass2.java:14)
变量int a
不是字段,但正如您所说,变量和构造函数完成后立即无法访问,而且绝对不是obj.a
如果您希望以这种方式使用它,您应该将它的定义移到构造函数之外(所以基本上是创建字段a
)
class A{
public int a;
public A(){
this.a =5;
}
}
有关声明构造函数的更多信息,请参阅: https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html
它只是一个成员变量,不属于 obj,你应该将 a 声明为局部变量:
public class Test{
public int a = 5;
public Test() {
}
}
在构造函数int a
中声明变量(在您的情况下)仍将在构造函数中本地工作。 当构造函数完成他的工作时, a
变量将被销毁。 所以你不能从另一个地方访问这个变量。
创建一个字段并使您的代码工作。 在构造函数之外进行声明。 然后你可以在构造函数中初始化它..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.