Java 引用与构造函数中的局部变量同名的实例变量?
这是一个理论性的示例,但是在声明了局部变量“a”之后,如何在构造函数中引用实例变量“a”,而不是当前对象变量“This.a”Java 引用与构造函数中的局部变量同名的实例变量?,java,oop,syntax,Java,Oop,Syntax,这是一个理论性的示例,但是在声明了局部变量“a”之后,如何在构造函数中引用实例变量“a”,而不是当前对象变量“This.a” public class Foobar { public int a = 0; public Foobar(int a) { this.a = a; } public Foobar(int b, int c) { a = b * c; int a = c; //after this
public class Foobar {
public int a = 0;
public Foobar(int a) {
this.a = a;
}
public Foobar(int b, int c) {
a = b * c;
int a = c; //after this point, is there any way of refer to the instance variable a but not a in the current object (i.e. this.a)?
}
public int getA() {
return this.a;
}
public static void main(String[] args) {
Foobar foo = new Foobar(3);
Foobar bar = new Foobar(3, 1);
System.out.println(foo.getA());
System.out.println(bar.getA());
}
}
代码中没有类变量 如果需要类变量,请使用
static int a
。当然,您将无法使用this.a
引用类变量:它仅适用于实例变量
当然,类变量和实例变量不能同名
如果您使用局部变量覆盖类变量(坏主意-不要这样做-大多数IDE会警告您),则可以使用
Foobar.a
引用类变量。实例变量a
和当前对象变量this.a
是同一个变量。只有两个变量,this.a
和a
。您已经描述了如何引用这两个变量。但是当您声明一个局部变量“a”时,就不能再引用类变量“a”,只能引用实例变量(使用“this.a”)。对吗?不,不对。这根本没有道理。这里没有“class variablea
”,除非您指的是“instance variablea
”,这是相同的东西。