静态内部类只能访问外部类的静态成员和静态方法 非静态内部类不管是静态方法还是非静态方法都可以在非静态内部类中访问
静态内部类和非静态内部类主要的不同:
- 静态内部类不依赖于外部类实例而被实例化,但非静态内部类需要 在外部类实例化后才可以被实例化静态内部类不需要持有外部类的引用。但非静态内部类需要持有对 外部类的引用静态内部类不能访问外部类的非静态成员变量和非静态方法。他只 能访问外部类的静态成员和静态方法,非静态内部类能够访问外部类的静 态和非静态成员和方法
静态内部类、非静态(成员)内部类、局部内部类、匿名内部类
三.局部内部类:在外部类的方法中定义的类在外部类的方法中定义的类,其作用的范围是所在的方法内。
他不能被 public、private、protected来修饰。他只能访问方法中定义的final类型的局部变量。
需要注意的是:
- 匿名内部类一定是在new的后面,这个匿名内部类必须继承一个父类 或实现一个接口匿名内部类不能有构造函数只能创建匿名内部类的一个实例在Java8之前,如果匿名内部类需要访问外部类的局部变量,则必须用 final修饰外部类的局部变量。在现在Java8已结取消了这个限制。
参见文章:
详谈Java内部类(超详细代码示例)



