一、成员内部类成员内部类: 定义在类中方法外的类 格式 class 外部类{ //外部类的成员位置 class 内部类{ // 内部类的成员位置 } }使用方式 1. 外部类 外部类对象名 = new 外部类(); 2. 外部类.内部类 内部类对象名 = 外部类对象名.new 内部类(); 简写方式: 外部类名.内部类 对象名 = new 外部类型.new 内部类型();内部类编译成独立的.class文件,前面冠以外部类的类名和$符号(如:Other$Inner.class) 二、被私有的成员内部类私有的成员内部类,只能在外部类的其他成员方法中创建这个成员内部类的对象,然后通过这个对象去调用被私用的成员内部类中的成员 三、被静态的成员内部类定义格式 外部类.内部类 变量名 = new 外部类.内部类();四、静态成员内部类的静态方法定义格式 内部类.外部类.静态成员方法五、匿名对象概念 没有名称的对象。创建对象时,只有创建对象的语句,却没有把对象地址赋值给某个变量。 创建格式 new 类名(参数列表); 匿名对象使用场景和总结 匿名对象可以调用成员变量并赋值,但是这样的使用方式并没有意义。同时匿名对象在调用方法时,如果方法本身有访问到成员变量,方法的执行结果依然没有意义。 匿名对象通常是在对象只需要访问成员一次的情况下使用,如果对象需要多次的操作成员,就不能使用匿名对象来访问。 匿名对象可以简化代码的书写,并且匿名对象没有指针指向引用,一旦匿名对象代码执行结束,这时这个对象就立刻变成垃圾。节约内存成本。 六、匿名内部类匿名内部类: 是内部类的简化写法,本质是一个带有具体实现的父类或者父接口的匿名的子类对象 匿名内部类的前提 匿名内部类必须继承一个 父类 或者实现一个 父接口 格式 new 父类名或者父接口名(){ //方法重写 public void method(){ //执行语句 } }七、引用类型扩展类作为参数:本类对象和子类对象都可以 类作为返回值:本类对象和子类对象都可以 抽象类和接口作为参数:子类对象 抽象类和接口作为返回值:子类对象