嵌套类(nested class)是指定义在另一个类内部的类,嵌套类存在的目的应该只是为外围类提供服务。

嵌套类的分类:

内部类

非静态成员类

非静态成员类即成员内部类,当创建成员内部类时,会与外围类对象相关联。

匿名类

匿名内部类经常是在编写事件监听的代码时使用匿名内部类,而且使代码更加容易维护。

myService.setNotifyListener(new NotifyListener() {
    @Override
    public void notify() {
    }
});

局部类

如果一个辅助类型仅服务于一个方法,可以考虑在方法内部创建一个局部类。

静态成员类

与非静态成员类的比较

  1. 静态内部类跟静态方法一样,只能访问静态的成员变量和方法,不能访问非静态的方法和属性,但是普通内部类可以访问任意外部类的成员变量和方法
  2. 静态内部类可以声明普通成员变量和方法,而普通内部类不能声明static成员变量和方法。
  3. 静态内部类可以单独初始化

    // 静态内部类
    Inner i = new Outer.Inner();
    
    // 普通内部类
    Outer o = new Outer();
    Inner i = o.new Inner();
    

参考