我试了下你的代码,发现方法内的变量a没有final关键字是会报错的,所以是需要final关键字。方法内的变量b在该方法体内有效,内部类的变量b在内部类中有效,在内部类中覆盖了外部方法的变量b,所以在内部类并不能调用,只能在外部方法中使用。代码如下:
public void innerClassDemo()
{
final int a =25;//常量
int b=13;//变量
System.out.println("访问外部类方法常量b:" + b);
class M{
int b=12;
int c=2;//\内部类中的变量
public void print(){
System.out.println();
System.out.println(Demo.this.a);
System.out.println("访问内部类变量b:" + b);
System.out.println("访问外部类方法常量a:" + a );
System.out.println("访问内部类变量c:"+c);
}
}
M s=new M();
s.print();
}