将一个类定义在另一个类或者方法的内部。
1、实例内部类
(1)在实例内部类中,不能定义静态的成员变量 和 成员方法;
(2)如果要定义静态的成员变量,则需要用 final修饰;
(3)实例化内部类:
必须借助外部类【也可以先将外部类对象创建出来,再创建实例内部类】
(4)访问 内部类 与 外部类 同名的成员变量:优先访问内部类自己的。
-> 如果要访问外部类同名成员变量时,必须: 外部类名称.this.同名成员名字
(5)外部类中,不能直接访问实例内部类中的成员,如果要访问必须先创建外部类的对象。
(6)实例内部类的非静态方法中包含了一个指向外部类对象的引用
2、静态内部类
(1)静态内部类只能访问外部类中的静态成员,静态方法
(2)创建静态内部类的对象:不需要先创建外部类对象
3、局部内部类
定义在方法体内部【只能在方法体内部使用,其他位置都不能用】
不能被public,static等访问限定符修饰
4、匿名内部类
匿名对象,只能用一次