1.成员内内部类
外部类名.内部类名 ss= new 外部类名().new内部类名();
内部类可以访问外部类,但是外部类访问内部类必须要实例化内部类,通过实例化名.变量名才可以调用
2.静态内部类
3.方法内部类
在方法中定义(同样不能加static修饰符)
4.匿名内部类
将类的定义与创建一起完成
当父类Person是抽象类时
test.getRead(new Person(){
重写部分
})
匿名内部类可以实现接口,也可以继承父类,但是不能同时使用(因为只有一个名字)