什么时候用到枚举类?-- 当取值是某个范围之一的时候,这时候可以使用枚举。
枚举怎么定义? -- 跟定义类一样,只是把class改成enum ,如 public enum Season{}
与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但枚举类的构造函数必须为私有的
枚举值就相当于实例变量。
- public enum Grade {
- A("A","90-100"),B("B","89-90"),C("C","79-80"),D("D","<60");//声明了属性
- private String tip;
- private String desc;
- private Grade(String tip,String desc){ //构造方法,私有
- this.tip = tip;
- this.desc = desc;
- }
- public String getTip() {
- return tip;
- }
- public String getDesc() {
- return desc;
- }
- }
枚举类与普通一致,可以继承或实现,如果有抽像方法的话,可以利用每个枚举值以匿名内部类的方式去实现
- public enum WeekDay {
- Mon{
- public void show() {
- System.out.println("星期1");
- }
- },Tue {
- public void show() {
- System.out.println("星期2");
- }
- },Wed {
- public void show() {
- System.out.println("星期3");
- }
- },Thu {
- public void show() {
- System.out.println("星期4");
- }
- };
- public abstract void show();
- }
- public class Demo {
- public static void main(String[] args) {
- WeekDay w = WeekDay.Thu; //不要new WeekDay
- w.show();
- }
- }
上面的也可以用带属性的方法实现
- public enum WeekDay {
- Mon("星期一"),Tue("星期二");
- private String tip;
- private WeekDay(String tip){
- this.tip = tip;
- }
- public String getTip() {
- return tip;
- }
- }
- public class Demo3 {
- public static void main(String[] args) {
- WeekDay w = WeekDay.Mon;
- System.out.println(w.getTip());
- }
- }
转载于:https://blog.51cto.com/lhl5230/1130534