类的字段和方法的参数是否会干扰?

Rom*_*man 0 java methods concurrency visibility field

我有一个名为"a"的字段.在类中我有一个方法,在这个方法的参数列表中我也有"a".那么,我会在方法中看到哪个"a"?它会是该领域还是该方法的论点?

public class myClass {
   private String a;
   // Method which sets the value of the field "a".
   public void setA(String a) {
     a = a;
   }
}
Run Code Online (Sandbox Code Playgroud)

顺便说一下,有类似的情况.方法有一些局部(for方法)变量,其名称与字段名称一致.如果我在方法(字段或局部变量)中引用这样的方法 - 局部变量,那么"看到"该方法会是什么?

Pét*_*rök 5

更多本地范围具有优先级,因此该参数a将隐藏该字段a.实际上,您将参数值设置a为自身.避免名称冲突(并提高可读性)的正确习惯是this用于明确标记类成员:

public void setA(String a) {
  this.a = a;
}
Run Code Online (Sandbox Code Playgroud)

局部变量vs成员变量也是如此:局部变量隐藏具有相同名称的成员变量.