现在的位置: 首页 > 综合 > 正文

06.枚举的作用,实现原理以及应用

2014年01月27日 ⁄ 综合 ⁄ 共 1314字 ⁄ 字号 评论关闭

枚举的作用,实现原理以及应用

1.枚举简介

枚举在C/C++中,是一个被命名的整型常数的集合枚举在日常生活中很常见。  例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,  SATURDAY, 就是一个枚举。  枚举的说明与结构和联合相似

其形式为:  enum 枚举名{  标识符[=整型常数],  标识符[=整型常数],  ...

标识符[=整型常数]  枚举变量;  

如果枚举没有初始化即省掉"=整型常数"则从第一个标识符开始次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后其后的成员按依次加1的规则确定其值。 

例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3  

enum Num{x1, x2, x3, x4}x;  

当定义改变成:  

enum Num{  x1,  x2=0,  x3=50,  x4  }x;  则x1=0, x2=0, x3=50, x4=51 

注意:  

1. 枚举中每个成员(标识符)结束符是",", 不是";", 最后一个成员可省略  ","。  

2. 初始化时可以赋负数以后的标识符仍依次加1。  

3. 枚举变量只能取枚举说明结构中的某个标识符常量。  

枚举类型在使用中有以下规定:  

1. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。例如对枚举weekday元素再作以下赋值: sun=5;mon=2;sun=mon; 都是错误的。  

2. 枚举元素本身由系统定义了一个表示序号的数值,从开始顺序定义为012…。如在weekday中,sun值为0mon值为1, …,sat值为6。 

3. 只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如: a=sun;b=mon; 是正确的。而: a=0;b=1; 是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换,如: a=(enum weekday)2;其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于: a=tue; 还应该说明的是枚举元素不是字符常量也不是字符串常量, 使用时不要加单、双引号。 

 

 

2.jdk1.5中的枚举

 枚举类型是JDK5.0的新特征。Sun引进了一个全新的关键字enum来定义一个枚举类。下面就是一个典型枚举类型的定义: 

Java代码 

1. public enum Color{ 

2. RED,BLUE,BLACK,YELLOW,GREEN 

3. } 

显然,enum很像特殊的class,实际上enum声明定义的类型就是一个类。而这些类都是类库中Enum类的子类(java.lang.Enum<E>)。它们继承了这个Enum中的许多有用的方法。

 

 

3.枚举的实现原理

如果你不想使用大量的if else来判断nextDay,也可以使用这样一种方式:内部类

采用抽象方法定义nextDay,就是将大量的if else转换成了一个个独立的类.

 

 

 

 

4.枚举的基本应用

5.实现带有构造方法的枚举

6.实现带有构造方法和抽象方法的枚举

抱歉!评论已关闭.