静态内部类、局部内部类可访问的变量限制

1、局部内部类:

可以访问的变量:(1)外部类的类变量(2)外部类的成员变量(3)所在方法中被final修饰的变量。

2、静态内部类:

可以访问的变量:(1)外部类的类变量

3、代码测试:

public class Main {
//test code
int aaa=1;
final int bbb=2;
public void get(){
int a=0;
final int c=2;
class C1{
public void get(){
System.out.println(c);
//1:提示错误:变量a不能被访问,需要被声明为final
System.out.println(a);//1(3)内部类只能访问所在方法中的final变量
System.out.println(bbb);//1(1)
System.out.println(aaa);//1(2)
}
}

}
static class C2{
    private void set(){
        //2:<a href="https://www.jb51.cc/tag/tishicuowu/" target="_blank" class="keywords">提示错误</a>:非静态变量ccc不能被静态上下文引用.这一点可以从jvm的类加载机制的顺序得到解释
        Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(aaa);//静态类<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>只能访问外部类的静态变量.
        Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(bob);//2(1)
    }
}

}

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...