用enum关键字定义枚举类,地位与class interface相同,有成员变量,方法,构造器,可以实现多个接口
一个java源文件只能有一个public枚举类,且必须名字相同
与普通类区别:
可以实现多个接口,但默认继承java.lang.Enum类,而不是Object类,所以不能显式的继承其他父类。java.lang.Enum实现了java.lang.Serializable和java.lang.Comparable两个接口
使用enum定义,非抽象的枚举类会默认使用final修饰,所以不能派生子类
枚举类的构造器只能用private修饰,且默认指定private
枚举类的所有实例必须在枚举类的第一行显式的列出,否则这个枚举类不能产生实例,这些实例系统自动添加public static final修饰
枚举类默认提供一个values()方法,用来遍历所有枚举值
public enum Season{
SPRING,SUMMER,FALL,WINTER;//四个实例,switch case可以直接使用
public String s;
}
使用枚举值:for(Season s : Season.values()){....}
使用成员:通过Enum的valueOf()方法获取指定枚举值创建实例:Season sea = Enum.valueOf(Season.class,"SUMMER")
然后通过实例调用成员:sea.s
不能通过new创建枚举类对象
实现接口:实例后面跟{...}来实现抽象方法