java内部类(局部内部类)

来源:互联网 发布:php实现单文件上传 编辑:程序博客网 时间:2024/06/11 16:20

在一个类的方法体中定义的一个内叫做局部内部类

局部内部类可以访问外部类中的成员变量,但是不能访问和他平级的局部变量。

class Outer{  int x=100;  public void show(){    class Inner{   System.out.println("这个是内部类:"+x);}}}class Demo{public static void main(String[] args){  System.out.println("Hello World");}}
不能访问局部变量

class Outer{    public void show(){   int x=100 //若这样写是错误的,// 改成  final int x=100;    class Inner{    System.out.println("这个是内部类"+x);}}}class Demo{  public static void main(String[] args){    System.out.println("Hello World");}}
why?

1)int x=100;与class Inner 的对像 new Inner()的生命周期不一样,x的生命周期是从int x=100;代码开始到show()方法的结束,可是new Inner()的生命周期要长。当show()方法结束后,new Inner()还会存在一段时间,直到gvm调用gc垃圾回收器来回收时都是存在的。

sun公司为啦解决这个问题,就采用的是让new Inner()来访问复制的int x ,的变量来用,所以采用的是final来修饰。

0 0
原创粉丝点击