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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周斌 中级黑马   /  2012-11-3 16:47  /  1365 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 周斌 于 2012-11-7 12:03 编辑

class InOut
{
String str = new String("Between");
public void amethod(final int iArgs)
{
  int it315;
  class Bicycle
  {
   public void sayHello()
   {
    System.out.println(str);
    System.out.println(iArgs);
   
   }
  }
}
}


在sayHello方法中,我们可以访问变量str和iArgs,为什么不能访问it315?

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1

查看全部评分

3 个回复

倒序浏览
当内部类定义在局部时
1,不可以被成员修饰符修饰
2,可以直接访问外部类中的成员,因为还持有外部类中的引用。
   但是不可以访问它所在的局部中的变量。只能访问被final修饰的局部变量。

class InOut
{
          String str = new String("Between");//外部类的变量
          public void amethod(final int iArgs)//被final修饰的局部变量
          {
                int it315;//局部变量,内部类不能访问
                class Bicycle//该内部类被定义在局部
                {
                     public void sayHello()
                     {
                          System.out.println(str);
                          System.out.println(iArgs);
   
                     }
               }
       }
}

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 黑马吕世成 于 2012-11-3 19:07 编辑

学习了,顶!  只是能否解释下为什么不能访问局部变量?
回复 使用道具 举报
你给它赋初值,看能不能访问。
局部变量在定义的时候是必须要初始化的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马