黑马程序员技术交流社区

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

作者: 我为你着迷    时间: 2014-4-12 18:38
标题: 关于内部类的问题
  1. class  Outer
  2. {
  3.                 private int x=3;
  4.                 class Inner//内部类
  5.                 {   
  6.                           int x=4;
  7.                                 void function()
  8.                     {
  9.                                     int x=6;
  10.                                     System.out.println("Inner:"+this.x);
  11.                     }
  12.                 }
  13.                
  14.                 void method()
  15.                 {
  16.                                 Inner in=new Inner();x       
  17.                                 in.function();
  18.           }
  19. }

  20. class  InnerClassDemo
  21. {
  22.          public static void main(Srring[] args)
  23.    {
  24.                     Outer out=new Outer();
  25.                     out.method();
  26.    }
  27. }
复制代码
大家好,我的问题是为什么内部类x的前边加上了一个this,打印的结果就变成了4呢? 没想明白。烦请坛友帮忙解释下,跪谢了。

作者: 天空之城°    时间: 2014-4-12 20:32
this是指当前类的对象,内部类也是当前类调用的就是内部类的变量了。
作者: 我为你着迷    时间: 2014-4-12 20:37
天空之城° 发表于 2014-4-12 20:32
this是指当前类的对象,内部类也是当前类调用的就是内部类的变量了。

没听明白!:'(
作者: 天空之城°    时间: 2014-4-12 20:52
如果你写outer.this.x打印出来就是3    如果输x打印出来就是6你现在输入的是this.x那么他调用的就是你现在这个内部类中的成员变量。你可以去看看this关键字的用法。
作者: 我为你着迷    时间: 2014-4-12 22:32
天空之城° 发表于 2014-4-12 20:52
如果你写outer.this.x打印出来就是3    如果输x打印出来就是6你现在输入的是this.x那么他调用的就是你现在 ...

懂了   哥们 谢谢你啊!
作者: 曹冬明    时间: 2014-4-14 09:50
这个是变量作用域的问题。当在一个方法中使用一个变量,首先会在本方法中查找是否有匹配,没有就依次向外查找,这一点和Python中的变量作用域是一样的




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