是呀 代码没上全
class Outer
{
int x=1; void show()
{
final int y=2;
//public class Inner不能被修饰符修饰
class Inner
{
void func()
{
//System.out.println(Outer.this.x);
System.out.println(y);
}
}
new Inner().func();
}
}class InnerDemo 
{
public static void main(String[] args) 
{
new Outer().show();
}
}
不加final 我觉得编译不会通过 可是都能出结果 哪有问题呢

解决方案 »

  1.   

    内部类和一般类一样使用,只是访问范围不同,与final没有关系
      

  2.   

    final用在类上表示这个类不能被继承,用在方法上表示这个方法不能被覆盖重写,你这个和final没关系
      

  3.   

    楼主再看看 static final  等等 那些修饰符  的含义。不知道你哪里学的说要用final
      

  4.   

    目测楼主用的是Java8, Java8里不需要加final了
      

  5.   

    int y=2必须加final才能被内部类访问,除非你用了Java8.