本帖最后由 魏群 于 2012-3-20 16:14 编辑
遮蔽:局部变量覆盖了成员变量的又一种说法而已。
如果才类中定义了一个成员变量 例如name,类的方法中又定义了同名的变量name 那么在方法中使用name整个变量的时候就会使用方法中定义的name而不去使用类中定义的name。
在你的代码中要使用类中的定义的静态的sentence成员变量,可以再main方法中这样写
用类名.静态成员变量来代表WhoKnows 类中的sentence 。如
System.out.println(WhoKnows.sentence);
如果类中的成员变量不是静态的可以用下面的代码形式调用类中的成员变量
class WhoKnows
{
public String sentence = "I don't know.";
public static void main(String[ ] args) {
WhoKnows wk = new WhoKnows();
wk.sop();
}
public void sop()
{
String sentence = "I know"; //局部变量覆盖成员变量
System.out.println(sentence );//直接使用变量名 则调用的是方法中的变量
System.out.println(this.sentence);//用this来代表当前对象
}
} |