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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不愿一人 中级黑马   /  2013-12-22 16:23  /  2463 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

其他地方不给回复,还是来着吧,求大神指点啊
这是我在黑马做基础测试时遇到的,对于func中的x直接访问就可以
对于B类中的成员变量x,用this.x
但对A类中的成员变量,应该怎么访问啊

  • class A {
  •     int x = 1;
  •     class B {
  •         int x = 2;
  •         void func() {
  •             int x = 3;
  •             System.out.println( ? );
  •         }
  •     }
  • }

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 淡定

查看全部评分

2 个回复

正序浏览
  1. class Outer
  2. {
  3.         private int x = 3;
  4.         class Inner
  5.         {
  6.                 private int x  = 4;
  7.                 void function()
  8.                 {
  9.                         int x = 5;
  10.                         System.out.println("x="+x);
  11.                         System.out.println("tis.x="+this.x);
  12.                         System.out.println("Outer.this.x="+Outer.this.x);
  13.                 }
  14.         }
  15. }
  16. class InnerClass
  17. {
  18.        
  19.         public static void main(String[] args)
  20.         {
  21.                 Outer.Inner in = new Outer().new Inner();
  22.                 in.function();
  23.         }
  24. }
复制代码

打印结果为: x=5,this.x=4,Outer.this.x=3;由此可知:x为内部类局部变量,this.x为内部类成员变量而Outer.this.x为外部类成员变量
           

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报
你看看这两句话对你有没有帮助:内部类可以直接调用外嵌类的方法和成员变量。其中外嵌类把内部类的对象看成是自己的成员,貌似你上面的程序没有调用呢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马