枚举
(1)、用普通类模拟枚举功能。用weekDay的类来模拟
私有的构造方法
每个元素分别用一个公有的静态成员变量表示
可以有若干公胡方法或抽象方法,例如,要提供nextDay()方法必须是抽象的。采用抽象方法定义nextDay()就将大量的if else语句转移成了一个个独立的类
代码例子:
下面,通过枚举类,实现相同的功能
a、什么是枚举,枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量在开发阶段无法实现这一目标。
b、可以将枚举类型看作一个类,它继承于java.lang.Enum类,当定义一个枚举类型时,每一个枚举类型成员都可以看作是枚举类型的一个实例。这些枚举成员都默认被final, public, static所修饰,所以可以直接用枚举类型名直接调用枚举类型成员。
c、枚举类型中可以定义构造方法,成员变量,变通方法和抽象方法,枚举元素必须位于枚举体中的最开始的部分,枚举元素列表要有分号与其他成员分隔。把枚举中的成员方法或变量等放在枚举元素的前面,编译器会报错。
常用的方法:
values():以数组的形式返回枚举类型成员
valueOf():将普通字符串转换为枚举类型实例
compareTo():比较两个枚举对象在定义时的顺序
ordinal():获得枚举成员的位置索引
d、枚举类型的构造方法:
枚举类型的构造方法必须为private修饰,
多个构造方法,怎么选择调用哪个构造方法的?若要调用构造方法,可以在定义枚举成员变量时,指定其构造方法的参数,系统会根据参数类型自动去调用相应的构造方法。
枚举元素MON和MON()的效果一样,都是调用默认的构造方法。
e、普通方法
可以通过枚举成员调用。和普通类调用形式一样