枚举

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.所有的枚举实力必须出现在该类的第一行,否则报错

默认为public static final修饰

        5.不能重写equals方法和hashCode方法,为final修饰

        6.如果构造器为有参构造,必须给枚举值一个对应类型的默认值。

7、定义枚举

        所有可能出现的值(星期枚举类,星期一-------星期日都定义),声明是用”,”间隔,声明结束后用”;”结尾。

正确


错误

8、主要方法


类名.枚举值                获取该枚举值,必须要有变量接受。返回值为该枚举值的类


name()                        返回该枚举值所对应的String对象。(toString()相同)


ordinal()                      返回该枚举值的索引,索引为定义是的顺序


static values()             返回此枚举类中所有的枚举值组成的数组

你可能感兴趣的:(枚举)