声明局部var后,实例变量将变为不可见

Eug*_*ene 0 java

当你在方法中使用相同的名称和类型声明局部变量时,如实例变量 - 是否意味着实例变量在该方法中变为"不可见"?

public class Test {
 Card card;
 public void foo(){
  Card card = new Card();
  card.test();
 }
}
Run Code Online (Sandbox Code Playgroud)

所以我在foo()方法中声明并实例化局部变量卡.然后为局部变量调用test()方法.如果我删除了Card card = new Card();test()方法,则调用实例变量.

Mik*_*rds 8

您所看到的有时被称为"遮蔽"变量.每当在内部作用域内声明变量时,该变量将成为与该名称关联的默认变量,直到它超出作用域.

在这种情况下,您可以使用语法访问类变量:

this.card
Run Code Online (Sandbox Code Playgroud)


Col*_*inD 7

实例变量不会变为不可见,但它会被局部变量隐藏.你仍然可以访问它this.card.

  • 在构造函数中看到这一点很常见,构造函数参数隐藏实例成员.除此之外,它可能是您的实例成员应具有更具描述性或唯一名称的症状. (4认同)