1、什么是枚举(pascal)
随着计算机的不断普及,程序不仅只用于数值计算,还更广泛地用于处理非数值的数据。例如:性别、月份、星期几、颜色、单位名、学历、职业等,都不是数值数据。 在其它程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差。如果能在程序中用自然语言中有相应含义的单词来代表某一状态,则程序就很容易阅读和理解。也就是说,事先考虑到某一变量可能取的值,尽量用自然语言中含义清楚的单词来表示它的每一个值,这种方法称为枚举方法,用这种方法定义的类型称枚举类型。
2、枚举类的属性
枚举类对象的属性不应允许被改动,所以应该使用 private final修饰。
枚举类的使用private final修饰的属性应该在构造器中为其赋值。
若枚举类显式的定义了带参数的构造器,则在列出枚举值时也必须对应的传入参数。
3、枚举类和普通类的区别
使用enum定义的枚举类默认继承了java.lang.Enum类。
枚举类的构造器只能使用private访问控制符。
枚举类的所有实例必须在枚举类中显式列出(,分隔 ; 结尾).列出的实例系统会自动添加public static final修饰。
4、为什么出现枚举类
为了代替静态常量。
5、为什么要用枚举类代替常量(常量的弊端)
1.常量必须定义类型,而如果定义了类型就不明确它定义的意义
2.命名非常局限,严格按照java的命名规范的话。需要加前缀或者后缀,如果不加再次看到就很难懂得自己定义的这个变量是干什么的。
6、枚举的特点
1.可实现接口。默认的继承java.lang.Enum类而不是继承Object,所有他不能显示的继承其他父类,父类实现了Serializable和comparable接口
2.非抽象的枚举类不能派生子类。默认为final修饰。抽象的可以派生子类。(如何为抽象的,类中有未实现的方法就称之为抽象的枚举类)
3.枚举类的构造器只能用private修饰。(不能new对象)写于不写都只能是private修饰
4.所有的枚举实力必须出现在该类的第一行,否则报错
![](https://img.haomeiwen.com/i11209709/41f4adb3e3a49c48.png)
5.不能重写equals方法和hashCode方法,为final修饰
6.如果构造器为有参构造,必须给枚举值一个对应类型的默认值。
![](https://img.haomeiwen.com/i11209709/c4ab35e41ec1a011.png)
7、定义枚举
所有可能出现的值(星期枚举类,星期一-------星期日都定义),声明是用”,”间隔,声明结束后用”;”结尾。
![](https://img.haomeiwen.com/i11209709/d36a2e624b87fbbb.png)
![](https://img.haomeiwen.com/i11209709/202758c217afc2ab.png)
8、主要方法
类名.枚举值 获取该枚举值,必须要有变量接受。返回值为该枚举值的类
name() 返回该枚举值所对应的String对象。(toString()相同)
ordinal() 返回该枚举值的索引,索引为定义是的顺序
static values() 返回此枚举类中所有的枚举值组成的数组
网友评论