【发布时间】:2016-02-20 23:19:30
【问题描述】:
我正在研究 Java (OOP) 中的构造函数,但不知道构造函数可以访问什么类型的变量?下列哪些变量可以被构造函数访问?
- 任何方法定义的局部变量
- 私有实例变量
- 公共实例变量
- 一个静态变量
我创建了以下示例来详细说明我的问题:
public class constructorAccess {
public int marks; // 3. Public instance variable
private String firstName; // 2. Private instance variable
static final String LASTNAME = "Smith"; // 4. Static variable
public static void studentId(){
int id; // 1. Local variable inside method
id = 5;
System.out.println(id);
}
public constructorAccess(int marks, String firstName) {
this.marks = marks;
this.firstName = firstName;
}
}
是否可以通过constructorAccess访问id(1. studentId方法中声明的局部变量)和LASTNAME(4.类中声明的静态变量)?
public constructorAccess(int marks, String firstName) {
this.marks = marks;
this.firstName = firstName;
// How can I use id variable here from studentId method?
// How can I use LASTNAME static variable here?
}
我用这个访问了私有和公共实例变量。引用,但 LASTNAME 和 id 变量给我错误(创建一个局部变量)。
【问题讨论】:
-
我认为您应该尝试编写一个构造函数,看看是否可以在其中使用这些变量。
-
作用域是作用域,构造函数只是另一种方法,没有特殊作用域
-
你的问题没有意义。如果静态变量和实例变量不能被构造函数访问,和/或它不能有局部变量,那么很难看出构造函数的实际用途,你不觉得吗?你真的考虑过吗?
-
@EJP 感谢您的评论。这意味着,构造函数可以访问提到的所有四个变量。我之前对任何方法定义的局部变量都有疑问。
-
@JarrodRoberson 我修改了问题。
标签: java oop constructor access-modifiers