内部类是指在一个外部类的内部再定义一个类。

内部类分为: 成员内部类、局部内部类、静态嵌套类、匿名内部类

1.成员内部类:

成员内部类,就是作为外部类的成员,可以直接使用外部类的所有成员和方法,即使是private的.

在外部类中如果要访问成员内部类的成员,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问

内部类可以拥有private访问权限、protected访问权限、public访问权限及包访问权限

如果成员内部类Inner用private修饰,则只能在外部类的内部访问,如果用public修饰,则任何地方都能访问;如果用protected修饰,

则只能在同一个包下或者继承外部类的情况下访问;如果是默认访问权限,则只能在同一个包下访问

成员内部类不能含有static的变量和方法。因为成员内部类需要先创建了外部类,才能创建它自己的类对象

对变量的访问:OuterClass.this.变量名;this.变量名

2.局部内部类:

局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内

外部类的方法形参必须使用final定义

3.静态嵌套类

又叫静态局部类、嵌套内部类,就是修饰为static的内部类。声明为static的内部类,不需要内部类对象和外部类对象之间的联系

内部类就只能访问外部类的静态成员变量

4.匿名内部类