站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题关于内部类

关于内部类

摘要: 关于内部类


定义在方法中的内部类,要访问方法中定义的本地变量或方法参数时,为什么这些变量要声名为final的呢?


因为在方法中,定义的变量相当于局部变量.
用FINAL定义的局部变量相当于一个常量,它的生命周期超出方法运行的生命周期.


内部类可以访问其所在方法的局部变量,但不能修改.因为内部类在使用的是那些变量的副本
所以为了避免你错误地以为修改了那些变量,就强制你必须用final来修饰变量,不让你修改


回复人:feifniao(飞飞鸟) ( 一级(初级)) 信誉:100 2006-11-10 18:30:31 得分:0
?
因为在方法中,定义的变量相当于局部变量.
用FINAL定义的局部变量相当于一个常量,它的生命周期超出方法运行的生命周期.

说的有道理,因为方法里定义的变量其生命同期会随着方法的结束而结束,内部类还可以再次利用,那能也就是说它的生活周期并不随方法结束而结束,当然不可以访问普通的局总变量了,用final定义的变量是一相不可变化的变量(一个常量),生命周期就不随方法的结束而结束了~~


在一个方法内定义的局部内部类的作用域也仅限于该方法内,出了该方法就不能再使用该类了
lingwen20错了


哈哈,这个问题,在 thinking in java 中明确说明,我昨天刚看到。


....java核心。。。。。。。。。看得郁闷


mark!


呵呵我再补充补充吧~~

“方法定义的一个变量”(其实你的例子中是“形参”,但一样啦)是所谓的“局部变量”,当这个方法结束的时候,这个变量也就不存在了。

而匿名类只是在这个方法的语句体中定义,并不一定在当时执行,虽然从语法上它可以访问到外面定义的那个变量,但如果真执行到那句的时候,那个变量不存在了,怎么办呢?所以,办法就是,在匿名类的创建之初,就让那个被访问的变量“凝固”下来,这就是 final 的作用啦,相当于把那个“变量”理解为“常量”。

如果访问的是外部类的“实例变量”,当然也就没有这个限制了。


是作用域的问题!
其实也没那复杂啦!!
做几个例子问题就解决啦!!



↑返回目录
前一篇: 关于java.lang.ClassCastException:的问题
后一篇: 求助:java 初学者 菜鸟类问题