Java-内部类
1 内部类
1.1 概念
内部类最大的优点:可以使用外部私有化数据
1.2 分类
静态内部类:类体中用static修饰的类
普通内部类(成员内部类):类体中没有static修饰的类
局部内部类:方法声明的内部类
匿名内部类:是指在调用方法的时候需要传入一个对象(一般是接口的实现类对象),这个时候就可以不传递对象,而传递一个匿名内部类
普通类也可以,一般是接口
匿名内部类就等于是子类
1.2.1 成员内部类
1.2.2 静态内部类
1.2.3 局部内部类
局部内部类访问外部方法的局部变量的时候,该局部变量必须使用final修饰,但是1.8之后final可以省略,但值依然不能修改
不管是成员方法还是静态方法,都不能使用static修饰局部内部类
不管是成员方法还是静态方法,局部内部类中都不可以声明静态属性
如果是成员方法的局部内部类,则可以直接访问外部类中的所有属性
如果是静态方法的局部内部类,则不能直接访问成员属性,需要有对象
类名:
如果多个方法的内部类类名不一致,就是外部类$1内部类
如果多个方法的内部类类名一致,就是外部类$1内部类,外部类$2内部类…
1.2.4 匿名内部类
方法名(new 接口名(){实现类类体});
传入匿名内部类的时候会自动创建一个对象传入,因为没有名字,所以不能复用,我们也不能手动创建对象
类名为 外部类类名$1,以此类推
匿名内部类中不能有静态声明,但可以有常量(public static final)
不能直接访问外部类的成员属性,需要有对象