黑马程序员技术交流社区

标题: 内部类问题 [打印本页]

作者: lfs454766767    时间: 2014-8-24 15:05
标题: 内部类问题
本帖最后由 lfs454766767 于 2014-8-26 08:43 编辑
  1. class OuterX {
  2.         int x = 10;
  3.         
  4.         void method() {
  5.                 final int x = 100;
  6.                 class Inner {
  7.                          int x = 1000;
  8.                          void method() {
  9.                                 int x =10000;
  10.                                 System.out.println(x);
  11. System.out.println(this.x);
  12.                                 System.out.println(OuterX.this.x);
  13.                                 
  14.                          }
  15.                 }
  16.                 new Inner().method();
  17.         }
  18. }
  19. public class O{
  20.         public static void main(String[] args) {
  21.                 OuterX x = new OuterX();
  22.                 x.method();
  23.         }
  24. }
复制代码
怎么在内部类中的方法内访问 final的那个 x??


作者: 胥亮    时间: 2014-8-24 15:12
this.x就是
作者: lfs454766767    时间: 2014-8-25 09:17
胥亮 发表于 2014-8-24 15:12
this.x就是

this.x调用的是1000的那个啊
作者: zuochbd    时间: 2014-8-25 09:25
只能改名字.int x = 3; { int x = 4; }你这种, 你想在块内都能访问两个x是无法做到的.
作者: abc83983682    时间: 2014-8-25 09:31
编译过没?

作者: 坤儿    时间: 2014-8-25 12:27
abc83983682 发表于 2014-8-25 09:31
编译过没?

我也觉得只能改名字: Inner中的X和 method中的x重名:根据作用域原理  Inner中的x会会覆盖method中的x
但Outer类中的x可以根据Outer.this.x来与Inner中的区别
作者: viliv715    时间: 2014-8-25 12:44
OuterX.this.x
加上外部类的名字
作者: faith    时间: 2014-8-25 15:49
要把methood这个方法名带入




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