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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© JXHIUUI 中级黑马   /  2015-8-15 09:32  /  312 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 JXHIUUI 于 2015-8-15 09:43 编辑
  1. class Outer
  2. {
  3.         static int x = 3;
  4.         
  5.         static class Inner
  6.         {
  7.                 void function()
  8.                 {
  9.                         System.out.println("inner:"+x);
  10.                 }
  11.         }
  12.         
  13.         void method()
  14.         {
  15.                 Inner in = new Inner();
  16.                 in.function();
  17.                
  18.         }
  19. }
  20. class InnerClassDemo
  21. {
  22.         public static void main(String[] args)
  23.         {
  24.                 new Outer.Inner().function();
  25.         }
  26. }
复制代码
如果内部类function功能中调用x时加this,即this.x,编译就会出错。如果Outer.this.x同样也会编译出错。初学者,求大神来解答!!

2 个回复

倒序浏览
this。简单的理解为当前这个类,this.x指的是Inner中的变量x,但是Inner类中并没有x变量,所以报错。如果采用Outher.this.x,计算机并不会理解这指的是类Outher中的x,换成Outher.x就行了。
回复 使用道具 举报
static 修饰的变量是存在方法区里的静态内容   this.x是调用这个函数的对象的x   此x非彼x outer.this也一样
静态优先于对象存在   所以静态方法无法调用在它之后才出现的对象中的内容 只能调用和他同时出现的静态内容
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马