黑马程序员技术交流社区
标题:
匿名内部类中为什么访问局部变量是final类型的
[打印本页]
作者:
李杰
时间:
2012-9-4 08:46
标题:
匿名内部类中为什么访问局部变量是final类型的
真心求教:)
作者:
邓超军
时间:
2012-9-4 09:09
应该是从生命周期长短来理解:
一个语句只能访问一个生命周期大于等于这个语句生命周期的变量。
如内部类的生命周期等于其所在的外部类的生命周期,所以要想访问一个局部变量,因为局部变量的生命周期小于内部类的生命周期,所以要用final修饰,使局部变量的生命周期大于等于内部类的生命周期,这样内部类才能访问局部变量。
作者:
吴通
时间:
2012-9-4 09:18
首先,final是一个修饰符。
1.可以修饰类、函数和变量
2.被final修饰的类不可以继承,为防止被继承。
3.被final修饰的方法不可以被复写
4.被final修饰的变量是一个常量,只赋值一次,既可以修饰成员变量又可以修饰局部变量。
内部类有两种:定义在成员位置上的和定义在局部位置上的。
定义在成员位置上的内部类可以访问成员变量和局部变量,而定义在局部位置上的内部类中的方法
可以直接访问外部类中的成员,但是想要访问局部变量,则局部变量前面必须加final才能被访问。
class Outer
{
int x=3;
void method(
final
int a)
{
final
int y=4;
class Inner
{
void function()
{
System.out.println(x+y+a);
}
}
}
}
class InnerTest
{
public static void main(String[] args)
{
Outer out=new Outer();
out.method(7);
}
}
作者:
杨震
时间:
2012-9-4 10:30
你可以去看下java核心技术一书,里面结合例子讲的非常详细
作者:
黑马--张帅
时间:
2012-9-4 11:20
有fianl和没fianl的区别都在这两幅图中
内存图.png
(39.04 KB, 下载次数: 17)
下载附件
2012-9-4 11:18 上传
内存1.png
(41.44 KB, 下载次数: 40)
下载附件
2012-9-4 11:19 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2