JAVA5新增了一个enum关键字,用以定义枚举类。枚举类是一种特殊的类,它一样可以有Field、方法,可以实现一个或多个接口,也可以定义自己的构造器。
1.枚举类的特殊性:
1)枚举类可实现一个或多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类而不是继承object类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。
2)使用enum定义非抽象的枚举类默认会用final修饰,因此枚举类不能派生子类。
3)枚举类的构造器只能使用private访问控制符,如果强制指定,也只能用private.
4)枚举类的所有实例必须在枚举类的第一列显示列出,否则这个枚举类永远都不能产生实例。列出这些枚举类时系统会自动添加public static final修饰。
2.枚举类的成员,方法和构造器:
package com.wx.test; public enum Gender { MAIL("男"),FEMALE("女"); private final String name; private Gender(String name){ this.name = name; } public String getName() { return name; } }
3.枚举类实现接口:
public interface IGender { public void info(); } public enum Gender implements IGender{ ; @Override public void info() { // TODO Auto-generated method stub } }
4.枚举类中的内部类:
public enum Gender implements IGender{ MAIL("男"){ public void info() { System.out.println("男"); } },FEMALE("女"){ //可不重写info }; private final String name; private Gender(String name){ this.name = name; } public String getName() { return name; } @Override public void info() { // TODO Auto-generated method stub } } public static void main(String[] args) { Gender.FEMALE.info(); Gender.MAIL.info(); }
执行结果:
男
5.包含抽象方法的枚举类:(必须显示创建枚举值并实现其抽象方法)
public enum Gender { FAMAIL{ @Override public void info() { System.out.println("女"); } }, MAIL{ @Override public void info() { System.out.println("男"); } }; public abstract void info(); }