java5新增了一个enum关键字,用于定义枚举类。枚举类是一种特殊的类,它一样可以拥有自己的成员变量、方法,可以实现一个或多个接口,也可以定义自己的构造器,一个java源文件只能定义一个public访问权限的枚举类。
枚举类和普通类有如下区别:
(1)枚举类可以实现一个或多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类,而不是Object类,因此枚举类不能显示继承其他父类。
(2)使用enum定义、非抽象的枚举类默认会使用final修饰,因此枚举类不能派生子类。
(3)枚举类的构造器只能用private修饰
(4)枚举类的所有实例必须放在枚举类的第一行显示列出,否则这个枚举类永远不能产生实例。
下面定义了一个枚举类:
public enum SeasonEnum
{
//在第一行列出四个枚举类
SPRING,SUMMER,FALL,WINTER;
}
——————————————————————————————————————————————————————————
包含抽象方法的枚举类:
假设有一个Operation枚举类,它的四个枚举值 PLUS MINUS TIMES DIVIDE 分别代表加 减 乘 除 ,该枚举类需要定义一个eval()方法来完成计算
(也就是说,四个枚举值对eval()方法有不同的实现)
public enum Operation
{
PLUS
{
public double eval(double x,double y)
{
return x+y;
}
},
MINUS
{
public double eval(double x,double y)
{
return x-y;
}
},
TIMES
{
public double eval(double x,double y)
{
return x * y;
}
},
DIVIDE
{
public double eval(double x,double y)
{
return x/y;
}
};
//为枚举类定义一个抽象方法,这个抽象方法由不同的枚举值提供不同的实现
public abstract double eval(double x,double y);
public static void main(String[] args)
{
System.out.println(Operation.PLUS.eval(4,7));
System.out.println(Operation.MINUS.eval(4,7));
System.out.println(Operation.TIMES.eval(4,7));
System.out.println(Operation.DIVIDE.eval(4,7));
}
}