关于枚举
1.枚举的基本介绍
- 枚举是一个特殊的类,一般表示一组常量
- 数据是一定范围的值,而不是任意值
2.枚举的定义
-
使用
enum
关键字来定义,每个常量使用,
来分隔权限修饰符 enum enumName{ 元素1, 元素2, 元素3, ………… }
-
最后一个数据元素用
;
结尾(只定义了数据元素时可以省略)public enum Color {//不能继承某个类,可以实现接口 //数据元素(用大写字母表示,本质上为常量) //数据元素必须定义 RED, BLUE,//默认调用了无参构造方法 GREEN;//(只定义了数据元素时,可以省略分号) }
枚举的本质
Java中enum
本质上就是一个类
1.枚举的成员
-
枚举的成员就是枚举对象,只不过他们是静态常量而已
-
如果用类来模拟枚举的话
//用类模拟枚举 public class Color1 { //枚举成员的本质(静态常量) public static final Color1 RED = new Color1(); public static final Color1 BLUE = new Color1(); public static final Color1 GREEN = new Color1(); //此时只能在类内进行访问 private Color1(){ } }
2.枚举可以添加构造方法
-
只能定义私有的构造方法
-
枚举中显式定义了带参的构造方法后,定义数据元素时必须手动调用
public enum Color { //枚举中显式定义了带参的构造方法后,定义数据元素时必须手动调用 RED("红色"), BLUE("蓝色"), GREEN("绿色"); //定义带参数的构造方法(只能定义私有构造方法) private Color(String colorName){ //对属性进行初始化 this.colorName = colorName; } }
3.枚举与类的区别
-
枚举不可以实例化(编译器自动为其构造方法加上了private)
//Color color = new Color();//不能通过构造方法去创建对象 Color color = Color.RED;//直接赋值定义的元素即可 printColor(color);
-
不定义setter方法,只提供getter方法
-
不能继承某个类,但是可以实现接口
-
所有枚举类默认继承
Enum
类
4.枚举的特点
-
数值在程序中是稳定的
-
所以有枚举类都继承了
Enum
类的方法toString(可以重写) equals hashcode
-
枚举成员也是常量,所以不能用数字开头
-
不可以用
=
为枚举常量赋值