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