java – 为什么我必须使用“this”关键字进行前向引用?
作者:互联网
当我使用this关键字访问类中的非静态变量时,Java不会给出任何错误.但是当我不使用它时,Java会出错.我为什么要用这个?
我知道通常什么时候应该使用它,但这个例子与正常用法非常不同.
例:
class Foo {
// int a = b; // gives error. why ?
int a = this.b; // no error. why ?
int b;
int c = b;
int var1 = this.var2; // very interesting
int var2 = this.var1; // very interesting
}
解决方法:
首先声明变量然后分配变量.该类与此相同:
class Foo {
int a;
int b;
int c = b;
int var1;
int var2;
public Foo() {
a = b;
var1 = var2;
var2 = var1;
}
}
你不能做a a = b的原因;是因为在创建对象时尚未定义b,但是对象本身(即this)与其所有成员变量一起存在.
以下是每个的说明:
int a = b; // Error: b has not been defined yet
int a = this.b; // No error: 'this' has been defined ('this' is always defined in a class)
int b;
int c = b; // No error: b has been defined on the line before
标签:java,class,this,forward-reference 来源: https://codeday.me/bug/20191004/1851476.html