内部类之局部内部类

来源:转载

局部内部类是指在方法的作用域内定义的内部类,简单点就是在方法中定义的内部类。

public class MethodInner {public void outMethod(){class Inner{void innerMethod(){};}}}

相比于上一篇讲到的成员内部类,有什么区别和自己的特别呢?只要分为这个几个特点。

A.作用域(scope)的限制。在方法里面定义的内部类,只能在方法中使用,包括他的实例化,反过来,内部类是可以渗透到他所有的外部类中去的,可以使用他所有的外部类的任何内容,这点也是内部类之所以作为java语言一个特性重要原因。

public class MethodInner {private int i = 1;public void outMethod(){class Inner{void innerMethod(){System.out.println(i);};}Inner inner = new Inner();inner.innerMethod();}}

B.如果是试图使用方法里面的非final变量(局部变量),java会告诉你不能这么做.因为在方法里面的非final变量在方法结束后,它里面的变量就会销毁,不能使用,但是内部类的对象在堆中依然存在,如果使用了方法里面的变量,那么java编译器肯定不答应。

public class MethodInner {public void outMethod(){int j = 2;final int k = 3;class Inner{void innerMethod(){System.out.println(j);//error codeSystem.out.println(k);};}}}

C.静态方法里面是无法使用非静态变量的,内部类作为方法的一部分也不例外,也是无法访问外部对象的非静态对象的。

public class MethodInner {int i = 1;static int j = 2;public static void outMethod(){class Inner{void innerMethod(){System.out.println(i);//error codeSystem.out.println(j);};}}}



分享给朋友:
您可能感兴趣的文章:
随机阅读: