黑马程序员技术交流社区

标题: 让你秒懂内部类和局部变量的关系 [打印本页]

作者: blueblueblue    时间: 2016-9-19 23:08
标题: 让你秒懂内部类和局部变量的关系
关于内部类访问局部变量时,局部变量要定义成常量的问题,课堂上老师举的例子不足以说明问题,许多同学还是懵懵哒,

我特意写了一个例子,当方法弹栈后,局部变量就随之消失,
如果还要去访问一个不存在变量,是非法的

欢迎留言!

[Java] 纯文本查看 复制代码
package com.haima.myreview;
//举例说明:为什么内部类访问局部变量时,局部变量要用final修饰
public class Test2_内部类访问局部变量 {
        public static void main(String[] args)  {
               
                //获取一个引用指向内部类对象
                Object obj = new Outer().method();
               
                //method方法弹栈后,局部变量还存在
                System.out.println(obj.toString());
        }
}

class Outer {
       
        public Object method() {
               
                //局部变量(假设没有加final)
                final String s = "abc";
               
                //内部类
                class Inner {
                       
                        //重写toString方法,目的是为了obj可以编译运行
                        public String toString() {       
                               
                                //访问局部变量
                                return s + "";
                        }
                }
               
                //返回内部类对象
                return new Inner();
        }
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2