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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马雨铎 黑马帝   /  2011-7-28 23:07  /  1600 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class LianXil {
static int h=1;
private int i=2;
public void myVoid()
{
  final int j=3;
  int k=4;
  class Nei
  {
   public void myNeiVoid()
   {
   System.out.println(h);
   System.out.println(i);
   System.out.println(j);
   //System.out.println(k);
  }
}
Nei n=new Nei();
n.myNeiVoid();
}
public static void main(String args[])
{
  LianXil lx=new LianXil();
  lx.myVoid();
}
}        
h、i、j 都能正常访问,但是 把第四个//System.out.println(k); 给释放,访问 K 就会发生变异异常,这是为什么?

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2

查看全部评分

3 个回复

倒序浏览
黑马网友  发表于 2011-7-28 23:38:56
沙发
你把第四个//System.out.println(k)给注释,但你在
public void myVoid()
{
  final int j=3;
  int k=4;
方法中的对象中定义了K成员变量啊,在这你又调用了 lx.myVoid(); 方法,程序就没找到变量K,所以会异常啊

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 我很赞同

查看全部评分

回复 使用道具 举报

回复 楼主 的帖子

内部类的方法要访问外部类的成员要加final修饰符
[ 本帖最后由 袁春龙 于 2011-07-28  23:45 编辑 ]
回复 使用道具 举报
黑马网友  发表于 2011-7-29 00:21:53
板凳

回复 楼主 的帖子

这样[code]public class LianXil {
static int h=1;
private int i=2;
public void myVoid()
{
  final int j=3;
  final int k=4;
  class Nei
  {
   public void myNeiVoid()
   {
   System.out.println(h);
   System.out.println(i);
   System.out.println(j);
   System.out.println(k);
  }
}
Nei n=new Nei();
n.myNeiVoid();
}
public static void main(String args[])
{
  LianXil lx=new LianXil();
  lx.myVoid();
}
}         [/code]把 int  k = 4;声明为final

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2 又见代码。

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马