内部类:类的五大成分之一,是定义在类中的类

class Outer{
    // 成员内部类
    class Inner{
        // 不能定义静态成员
        // static void show(){}
        // 可以定义常量
        static final int count = 0;    
    }

    static class StaticInner{
        private String name;
        private int age;

        // setter getter
        // ......
    }

    public Outer(){
        class LocalInner{}
    }
}

用处:提供更好的封装性、

分类:
1)静态内部类
2)成员内部类(实例内部类)
3)局部内部类
4)匿名内部类

静态内部类:有staic修饰,会加载一次,属于外部类本身。
访问格式:外部类名称.内部类名称 对象名称 = new 外部类名称.内部类构造器

成员内部类:无static修饰,随着对象的加载而加载
访问格式:外部类名称.内部类名称 对象名称 = new 外部类构造器.new 内部类构造器;


匿名内部类:一个没有名字的局部内部类
new 类名|抽象类|接口(形参){
    // override
}