------- android培训、java培训、期待与您交流! ----------
枚举类:
在某些情况下,一个类的对象有限且固定,我们就可以定义成枚举类。
特点:私有的构造方法,这个类的实例对象都使用public static final修饰。
手动实现将一个普通类定义成枚举类:例如:季节,这个类一共有四个对象,春天夏天秋天冬天。
这个类的对象有限且固定。
当JDK1.5时增加了enum关键字,用于定义枚举类。正如我们上面的例子一样,枚举类也是一种类只不过比较特殊,它一样可以有自己的Field,方法,构造器。可以实现一个或者多个接口。
但是它与普通类的却别在于:
1,当使用enum关键字定义枚举类时,默认的继承了java.lang.Enum类,而不是继承Objec。其中java.lang.Enum实现了java.lang.Serializable和java.lang.Comparable类。
2,当使用enum关键字定义枚举类时,非抽象的枚举类会默认使用final修饰,因此这个枚举类不能派生子类。
3,构造方法必须私有化,如果省略访问修饰符,那么默认是private
4,枚举类的所有实例必须再枚举类的第一行列出来。系统会默认添加public sttic final修饰。
现在我们将上面的例子转变成用enum关键字定义的枚举类。
因为用enum关键字定义的枚举类继承了java.lang.Enum类,那么我们就可以使用Enum类中的方法。
int compareTo() 与指定对象比较顺序,如果该对象在指定对象之后返回正数,之前返回负数,否则返回0
String name() 返回枚举实例的名称。
int ordinal() 返回返回这个枚举实例,在枚举类的枚举值列表中的索引。 注意:第一个枚举值的索引为0
String toString() 作用于name方法相似,都是返回枚举值的名字,但这个方法更常用。
valueOf( name ) 这个方法是静态的,可以传入一个字符串找到这个枚举值的名字所对应的值。
values ()返回枚举类中的所有实例的数组。
实现接口的枚举类:
结果
带有抽象方法的枚举类: