黑马程序员技术交流社区

标题: 碰到一个有意思的问题,求解 [打印本页]

作者: 帅哥哥    时间: 2014-5-23 15:24
标题: 碰到一个有意思的问题,求解
本帖最后由 帅哥哥 于 2014-5-24 11:39 编辑

上代码:
  1. class Outer
  2. {
  3.         String s = "1";
  4.         void func_3()
  5.         {
  6.                 final String s = "2";
  7.                 class Inner_3
  8.                 {
  9.                         String s = "3";
  10.                         void func_2()
  11.                         {
  12.                                 String s = "4";
  13.                                 System.out.println(/*这里想访问final类型的那个s = "2",怎么办*/);
  14.                         }
  15.                 }
  16.         }
  17. }
复制代码




作者: 谢振宣    时间: 2014-5-23 16:40
  1. class Outer
  2. {
  3.         String s = "1";
  4.         void func_3()
  5.         {
  6.                 final String s = "2";
  7.                 final String sf = "2";
  8.                 class Inner_3
  9.                 {
  10.                         String s = "3";
  11.                         void func_2()
  12.                         {
  13.                                 String s = "4";
  14.                                 /*这里想访问final类型的那个s = "2",怎么办*/
  15.                                 System.out.println("Outer.this.s = "+Outer.this.s);
  16.                                 System.out.println("this.s = "+this.s);
  17.                                 System.out.println("s = "+s);
  18.                                 System.out.println("sf = "+sf);
  19.                         }
  20.                 }
  21.                 new Inner_3().func_2();
  22.         }
  23. }
  24. class Demo
  25. {
  26.         public static void main(String[] args)
  27.         {
  28.                 new Outer().func_3();
  29.         }
  30. }
  31. /*以下是执行结果,每一个引用都有自己所对应的变量,若想访问s = "2"就只能更换变量的名字了
  32. *Outer.this.s = 1
  33. *this.s = 3
  34. *s = 4
  35. *sf = 2
  36. */
复制代码

作者: 帅哥哥    时间: 2014-5-23 16:51
本帖最后由 帅哥哥 于 2014-5-23 16:54 编辑
谢振宣 发表于 2014-5-23 16:40

不能修改源代码,发了这帖子之后我就后悔了,我好像想到了一个很简单的方法,还没试,等试试能的话再发出来~~~

哎呀,居然不对。。。。。

作者: 假Rǔ有⒈兲    时间: 2014-5-23 17:07
看不懂啊
作者: 帅哥哥    时间: 2014-5-23 17:33
假Rǔ有⒈兲 发表于 2014-5-23 17:07
看不懂啊

就是定义了四个同名变量
一个在外部类成员位置上
一个在外部类成员函数内
一个在局部内部类成员位置上
一个在局部内部类成员函数内
问在局部内部类成员函数中怎么访问外部类成员函数中的局部变量
第一个,Outer.this可以访问
第二个,不知道
第三个,this可以访问
第四个,直接就可以访问




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2