黑马程序员技术交流社区
标题:
遮蔽(shadow)
[打印本页]
作者:
谢明
时间:
2012-3-20 15:58
标题:
遮蔽(shadow)
class WhoKnows {
static String sentence = "I don't know.";
public static void main(String[ ] args) {
String sentence = "I know!"; // 遮蔽了全局静态的sentence
System.out.println(sentence); // 将打印 “Iknow'”
}
}
复制代码
文章中看到的 关于遮蔽的 介绍 但是不懂这种方法有什么用处 还有被遮蔽的变量或方法怎样被调用呢
作者:
魏群
时间:
2012-3-20 16:13
本帖最后由 魏群 于 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来代表当前对象
}
}
作者:
谢明
时间:
2012-3-20 17:09
嗯 非常感谢{:soso_e105:}
{:soso_e149:}为什么我木有分呢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2