咱们先看一下什么是枚举,枚举的概念是:
在C#或C++,java等一些计算机编程语言中,枚举类型是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中,它是一种构造数据类型。枚举类型用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
定义:是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.
使用格式:枚举类型放在窗体模块、标准模块或共用模块中的声明部分,通过enum语句来定义。
概念一般比较难懂,咱们直接看一下枚举的格式:
同学们应该也写过这样的代码:
那咱们利用枚举类型进行一波转换:
是不是相当简洁,使用 enum 定义枚举类
1、Java5新增了一个关键字 enum (与 class,interface 关键字的地位相同),用于定义枚举类
2、枚举类是一种特殊的类,可以有自己的成员变量,方法,可以实现一个或多个接口,也可以定义自己的构造器
3、一个java源文件最多定义一个 public 访问权限的枚举类,且Java源文件也必须和该枚举类的类名相同
但枚举类不是普通的类,它与普通类有如下区别:
①、枚举类可以实现一个或者多个接口,使用 enum 定义的枚举类默认继承了 java.lang.Enum 类,而不是默认继承 Object 类,因此枚举类不能显示继承其他父类。其中 java.lang.Enum 实现了 java.lang.Serializable 和 java.lang.Comparable 接口
②、使用 enum 定义非抽象的枚举类默认会使用 final 修饰,因此枚举类不能派生子类
③、枚举类的构造器只能使用 private 访问控制符,如果省略了构造器的访问控制符,则默认使用 private 修饰;如果强制使用访问控制符,则只能使用 private 修饰符
④、枚举类的所有实例必须在第一行显示列出,否则这个枚举类永远不会产生实例。列出这些实例时,系统会自动添加 public static final 修饰,无需显示添加。
枚举实现的原理:
枚举的实现,其实反编译一把,看到源码就能明白了
一看就明白了吧,每个 枚举项就是一个对象,并且私有构造函数,给了默认值,看到这个反编译后代码,咱们是不是也可以定义构造函数,来实现枚举的扩展使用呢?
咱们输出一波,看看这样是不是可以:
还可以通过接口来实现具体业务场景:
就可以很灵活的进行运用,当然枚举类型还有其它很多运用,这里就先不多介绍了。