A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谢明 中级黑马   /  2012-3-20 15:58  /  1955 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class WhoKnows {

  2. static String sentence = "I don't know.";

  3. public static void main(String[ ] args) {

  4. String sentence = "I know!"; // 遮蔽了全局静态的sentence

  5. System.out.println(sentence); // 将打印 “Iknow'”

  6. }

  7. }
复制代码
文章中看到的  关于遮蔽的  介绍   但是不懂这种方法有什么用处  还有被遮蔽的变量或方法怎样被调用呢

2 个回复

倒序浏览
本帖最后由 魏群 于 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来代表当前对象
        }
}
回复 使用道具 举报
嗯 非常感谢{:soso_e105:}  
{:soso_e149:}为什么我木有分呢  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马