枚举

2021-07-20/2021-07-20
0 评论 186 浏览

1. 枚举类

1.1 概述

概述:枚举是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。举例:一周只有 7 天,一年只有 12 个月等

格式:public enum 枚举名称 {}

1.2 自定义枚举类

第一版

 1public class Direction1 {
 2	// 创建几个实例
 3	public static final Direction1 FRONT = new Direction1();
 4	public static final Direction1 BEHIND = new Direction1();
 5	public static final Direction1 LEFT = new Direction1();
 6	public static final Direction1 RIGHT = new Direction1();
 7
 8	// 私有构造方法
 9	private Direction1() {}
10}

第二版

 1public class Direction2 {
 2	// 创建几个实例
 3	public static final Direction2 FRONT = new Direction2("前");
 4	public static final Direction2 BEHIND = new Direction2("后");
 5	public static final Direction2 LEFT = new Direction2("左");
 6	public static final Direction2 RIGHT = new Direction2("右");
 7
 8	// 私有构造方法
 9	private Direction2(String name) {
10		this.name = name;
11	}
12
13	// 加入成员变量
14	private String name;
15
16	public String getName() {
17		return name;
18	}
19}

第三版

 1public abstract class Direction3 {
 2	// 创建几个实例
 3	public static final Direction3 FRONT = new Direction3("前") {
 4		@Override
 5		public void show() {
 6			System.out.println("前");
 7		}
 8
 9	};
10	public static final Direction3 BEHIND = new Direction3("后") {
11		@Override
12		public void show() {
13			System.out.println("后");
14		}
15
16	};
17	public static final Direction3 LEFT = new Direction3("左") {
18		@Override
19		public void show() {
20			System.out.println("左");
21		}
22
23	};
24	public static final Direction3 RIGHT = new Direction3("右") {
25		@Override
26		public void show() {
27			System.out.println("右");
28		}
29
30	};
31
32	// 加入成员变量
33	private String name;
34
35	// 私有构造方法
36	private Direction3(String name) {
37		this.name = name;
38	}
39
40	public String getName() {
41		return name;
42	}
43
44	// 加入抽象方法
45	public abstract void show();
46}

1.3 系统定义的枚举类

第一版

1public enum Direction1 {
2	FRONT, BEHIND, LEFT, RIGHT;
3}

第二版

 1public enum Direction2 {
 2	FRONT("前"), BEHIND("后"), LEFT("左"), RIGHT("右");
 3
 4	// 添加成员变量
 5	private String name;
 6
 7	// 私有构造方法
 8	private Direction2(String name) {
 9		this.name = name;
10	}
11
12	public String getName() {
13		return name;
14	}
15}

第三版

 1public enum Direction3 {
 2	FRONT("前") {
 3		@Override
 4		public void show() {
 5			System.out.println("前");
 6		}
 7	},
 8	BEHIND("后") {
 9		@Override
10		public void show() {
11			System.out.println("后");
12		}
13	},
14	LEFT("左") {
15		@Override
16		public void show() {
17			System.out.println("左");
18		}
19	},
20	RIGHT("右") {
21		@Override
22		public void show() {
23			System.out.println("右");
24		}
25	};
26
27	// 添加成员变量
28	private String name;
29
30	// 私有构造方法
31	private Direction3(String name) {
32		this.name = name;
33	}
34
35	public String getName() {
36		return name;
37	}
38
39	// 添加抽象方法
40	public abstract void show();
41}

注意事项

  • 定义枚举类要用关键字 enum
  • 所有枚举类都是 Enum 的子类
  • 枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其它的东西,这个分号就不能省略,建议不要省略
  • 枚举类可以有构造器,但必须是 private 的,它默认的也是 private 的。枚举项的用法比较特殊:枚举(“”);
  • 枚举类也可以有抽象方法,但是枚举项必须重写该方法
  • 枚举在 switch 语句中的使用

评论
发表评论
       
       
取消