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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yanyoucheng520 中级黑马   /  2014-7-11 02:56  /  1015 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

各位大神,对于class A{
          int x = 1;
          class B {
          int x = 2;
          void func() {
          int x = 3;
          System.out.println(A.this.x+":"+this.x+":"+x );
                }
            }
          }
我看到网上有的解决方法如下:
public class Test8 {
        public static void main(String args[]) {
          //创建A对象,   
                  A a=new A();
                  //在对象A中创建对象B
                  A.B b=a.new B();
                  b.func();
        }
}
class A{
          int x = 1;
          class B {
          int x = 2;
          void func() {
          int x = 3;
          System.out.println(A.this.x+":"+this.x+":"+x );
                }
            }
          }
能不能解释这里面的奥秘啊,本人不是很懂

5 个回复

倒序浏览
你是被他的格式混淆了,他的A.B是人家的A类的内部类B的内容 所以A.this x问的是A的成员变量X的值而this.x问的是B类中X的值,至于X问的是方法func中的值,于是在A.B()中 创建a类的内部类b叫a.b()
回复 使用道具 举报
楼上说的很对
回复 使用道具 举报

哈哈,谢谢~加好友吗?:lol
回复 使用道具 举报
CanABirdFly? 发表于 2014-7-11 09:11
哈哈,谢谢~加好友吗?

可以啊,呵呵
回复 使用道具 举报
CanABirdFly? 发表于 2014-7-11 08:44
你是被他的格式混淆了,他的A.B是人家的A类的内部类B的内容 所以A.this x问的是A的成员变量X的值而this.x问 ...

A.B b=a.new B(); 这里能够详细讲解下吗,童鞋。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马