声明:以下内容来自《疯狂Javav讲义》,如有侵权,请联系删除。
一、初识枚举类
枚举类定义方式如下:
二、枚举类的特点
(1)枚举类默认继承java.lang.Enum,不能显示继承其他父类
(2)非抽象的枚举类默认会使用final修饰,因此不能派生子类
(3)枚举类的构造器只能用private修饰
(4)枚举类的所有实例必须在定义枚举类时显示列出(这其实就是在调用枚举类的构造器)
(5)枚举类默认提供了一个values()方法,可以很方便的遍历枚举类的所有实例
运算结果:
可以看出,在实例化枚举类的过程中,自动调用了枚举类的无参构造器。而values()方法返回的是一个枚举类型的数组,利用foreach方法很方便的遍历枚举类。
三、枚举类中带参数的构造函数
由上面代码可知,在构造函数中带形式参数时,列举枚举类的实例时也需要带参数。
四、枚举类实现接口的两种方式
(1)与普通类实现接口方式相同
五、包含抽象方法的枚举类
假设一个枚举类中有一个用于计算的方法,但是对于每个枚举类的实例来说,具体的计算方式不一样,因此这个计算的方法要被设计为抽象方法被枚举类实例去实现。代码如下:
可以看到编译后有五个class文件,证明了上面的实现抽象方法的枚举类实例时枚举类的匿名子类。