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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我为你着迷 金牌黑马   /  2014-4-12 18:38  /  1311 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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呢? 没想明白。烦请坛友帮忙解释下,跪谢了。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

5 个回复

倒序浏览
this是指当前类的对象,内部类也是当前类调用的就是内部类的变量了。
回复 使用道具 举报
天空之城° 发表于 2014-4-12 20:32
this是指当前类的对象,内部类也是当前类调用的就是内部类的变量了。

没听明白!:'(
回复 使用道具 举报 1 0
如果你写outer.this.x打印出来就是3    如果输x打印出来就是6你现在输入的是this.x那么他调用的就是你现在这个内部类中的成员变量。你可以去看看this关键字的用法。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
天空之城° 发表于 2014-4-12 20:52
如果你写outer.this.x打印出来就是3    如果输x打印出来就是6你现在输入的是this.x那么他调用的就是你现在 ...

懂了   哥们 谢谢你啊!
回复 使用道具 举报
这个是变量作用域的问题。当在一个方法中使用一个变量,首先会在本方法中查找是否有匹配,没有就依次向外查找,这一点和Python中的变量作用域是一样的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马