一直对内部类、静态内部类这些名词的认识不太清晰,做一些小小的总结。
一、什么是嵌套类(nested class)?
首先Java中的嵌套类(nested class)是指定义在另一个类的内部的类,所以叫嵌套类。它有很多种分类的方式,从类型上分,有成员类(member class)、匿名类(anonymous class)和局部类(local class);从属性上来说,有静态类(static class)和内部类(inner class)之分,除了静态成员类之外,其他的非静态成员类、匿名类和局部类都可以说是内部类。下面我们来了解每种类型的特点和作用。
二、成员类(member class)
成员类是我们用的比较常见的一种类型,就是在一个类的内部(类的结构体内)定义的类,而成员类又分为静态成员类(static member class)和内部成员类(inner member class)、也就是非静态成员类。
1、静态成员类(static member class)
静态成员类就是定义在类的内部的,用static修饰符修饰的类,是最简单的嵌套类。可以这么来理解,它就是一个普通的类,只不过恰巧被声明在另一个类的内部用作辅助而已,而你将它声明在类的外部不是不可以,只是声明在内部更能看出它“辅助”外部类的作用罢了。由于是static修饰的,它不能访问外部类的非static属性和方法,但它可以单独创建,就是在不需要外部类的实例的情况下可以创建,比如Builder模式中