1 内部类概念,定义格式,特点
1.1 内部类概念
内部类:就是在一个类中定义一个类。举例:在一个类A的内部定义一个类B,类B就被称为内部类

1.2 内部类定义格式
public class 类名{ 修饰符 class 类名{ }}
范例:
public class Outer { public class Inner { } }
1.3 内部类的访问特点
1.内部类可以直接访问外部类的成员,包括私有
2.外部类要访问内部类的成员,必须创建对象
例:

2 内部类分类
内部类位置:
1.成员内部类:在类里面的成员位置
延伸:静态内部类,用static修饰的成员内部类
2.局部内部类: 在方法里面
延伸:匿名内部类,定义在方法内部用来实现接口或者类名的
2.1 成员内部类
格式:外部类.内部类 对象名 = new 外部类对象().new 内部类对象();
范例:Outer.Inner oi = new Outer().new Inner();

2.2 静态内部类
有static
修饰的成员内部类格式:

静态内部类创建对象的格式:
格式: 外部类名.内部类名 对象名 = new 外部类构造器.new 内部类构造器();
拓展:
1、静态内部类中是否可以直接访问外部类的静态成员?
可以,外部类的静态成员只有一份可以被共享访问。
2、静态内部类中是否可以直接访问外部类的实例成员?
不可以的,外部类的实例成员必须用外部类对象访问。
注意:静态内部类开发中实际上用的还是比较少。
2.3 局部内部类
局部内部类是在方法中定义的类,所以外界是无法直接使用,需要在方法内部创建对象并使用
该类可以直接访问外部类的成员,也可以访问方法内的局部变量
局部内部类:放在方法、代码块、构造器等执行体中

2.4 匿名内部类
概述:匿名内部类本质上是一个特殊的局部内部类(定义在方法内部)
前提:存在一个类或者接口,这里的类可以是具体类也可以是抽象类
格式:

匿名内部类的特点:
匿名内部类是一个没有名字的内部类。
匿名内部类写出来就会产生一个匿名内部类的对象。
匿名内部类的对象类型相当于是当前new的那个的类型的子类类型。