1.什么是枚举
Java 5
新增了一个enum
关键字(它与class
、interface
关键字的地位相同),用以定义枚举类。枚举类是一种特殊的类,它一样可以有自己的Field
、方法,可以实现一个或者多个接口,也可以定义自己的构造器。
一个Java源文件中最多只能定义一个
public
访问权限的枚举类,且该Java源
文件也必须和该枚举类的类名相同。
2.枚举类和普通类的区别
枚举类终究不是普通类,它与普通类有如下简单区别:
- 枚举类可以实现一个或多个接口,使用
enum
定义的枚举类默认继承了java.lang.Enum
类,而不是继承Object
类。其中java.lang.Enum
类实现了java.lang.Serializable
和java.lang. Comparable
两个接口。 - 使用
enum
定义、非抽象的枚举类默认会使用final
修饰,因此枚举类不能派生子类。 - 枚举类的构造器只能使用
private
访问控制符,如果省略了构造器的访问控制符,则默认使用private
修饰;如果强制指定访问控制符,则只能指定private
修饰符。 - 枚举类的所有实例必须在枚举类的第一行显式列出,否则这个枚举类永远都不能产生实例。列出这些实例时,系统会自动添加
public static final
修饰,无须程序员显式添加。
3.使用枚举
在java语言中,使用关键字enum
定义一个枚举类型,从构造器区分:枚举可以分为无参构造器的枚举
和有参构造器的枚举
。
注意事项
- 所有的枚举都隐含地继承自
java.lang.Enum
,因为Java不支持多重继承,所以枚举类型不能再继承其他类 - 枚举类型的构造器必须为包级私有或私有的
- 枚举之间是逗号,与其他语法的间隔是分号。
3.1 无参构造器的枚举
声明
|
实例
|
3.2 有参构造器的枚举
声明
|
实例
|
4.枚举遍历
4.1 无参构造器遍历
|
4..2 有参构造器遍历
|