我对教程有一点误解.这是一个切口:
public class Test {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
无论如何,我无法理解的是如何引用id.例如,我可以看到在getId方法中,我可以通过只返回id来直接访问先前定义的id.但是在setId方法中,先前定义的id被称为this.id,方法参数是id.
现在,如果在get方法中有"return this.id",那么我会理解一切.但此刻我很困惑.我假设如果我将在set方法中返回id,我将返回参数,而不是类定义的id.总而言之,只要键入"id"就可以加入类定义的id,除非有一个带有相同名称的参数传递?这听起来很奇怪,我错过了什么?
在Java中,在正常情况下,this类的内部是可选的.可以使用或不使用任何属性this.
如果您有一个具有相同名称的参数或局部变量,则歧义使写入this必须.
这被称为" 阴影 ".据说局部变量正在遮蔽属性.
在编写时id,对Java最合理的猜测是你指的是最本地的引用,它是参数名而不是属性.要覆盖此行为,您必须澄清您愿意访问this.id,意味着属性,而不是本地变量.
希望把事情搞清楚!