本帖最后由 陈冲 于 2012-7-18 15:11 编辑
- class Outer
- {
- int score = 95;
- void inst(final int s)
- {
- final int temp = 20 ;//使用final关键字定义局部变量
- class Inner
- {
- void display()
- {
- System.out.println("成绩: score = " + (score+s+temp));
- }
- }
- Inner in = new Inner();
- in.display();
- }
- }
- public class InnerClassDemo5
- {
- public static void main(String[] args)
- {
- Outer outer = new Outer();
- outer.inst(5) ;
- }
- }
复制代码 在方法中定义的内部类只能访问方法中的final类型的局部变量,
因为用final定义的局部变量相当于一个常量,它的生命周期超出方法运行的生命周期。
不用final定义变量temp的情况:内部类可以访问final标记的变量s,却无法访问在方法内部声明的变量temp
使用final定义temp后能够顺利编译,运行结果如下
|