当你在方法中使用相同的名称和类型声明局部变量时,如实例变量 - 是否意味着实例变量在该方法中变为“不可见”?
public class Test {
Card card;
public void foo(){
Card card = new Card();
card.test();
}
}
所以我在foo()方法中声明并实例化局部变量卡。然后为局部变量调用test()方法。如果我删除了Card card = new Card();
test()方法,则调用实例变量。
答案 0 :(得分:8)
您所看到的有时被称为“遮蔽”变量。每当在内部作用域内声明变量时,该变量就成为与该名称相关的默认变量,直到它超出作用域。
在这种情况下,您可以使用语法
访问类变量this.card
答案 1 :(得分:7)
实例变量不会变为不可见,但它会被局部变量隐藏。您仍然可以使用this.card
访问它。
答案 2 :(得分:1)
您可以使用this.card
访问实例变量
this.variable
引用将始终为您提供实例变量。如果你有一个与实例变量相同的函数的参数,这可能会很有用,但如果可以的话,我建议尽量避免这个问题。
答案 3 :(得分:1)
是的,本地范围的卡将优先。您可以使用'this'来引用实例变量:
public void foo() {
Card card = new Card();
this.card.test(); // tests the instance variable card
card.test(); // tests the local card
}
答案 4 :(得分:0)
方法中的本地范围变量将优先于具有相同名称的实例变量,除非您使用this
关键字将实例变量置于范围内。
答案 5 :(得分:0)
如果要在本地引用实例变量,则必须使用 this 。