1、什么是枚举类?
枚举类是一种实例是已知而且固定的类。
2、如何定义一个枚举类型?以及初步使用?
语法:【修饰符】 enum 枚举名
{
//必须要在第一行立刻列出所有的枚举实例【其实是在调用无参数的构造器创建实例】
//属性【一般设置成private修饰的,不让别人随意修改】
//方法【方法可以抽象方法,然后在列出所有实例的时候用匿名类的方式,重写这个方法】
//构造器【只能是私有的,private修饰,因为实例已经固定,不能再随意创建】
//初始化块
//内部类
}
代码示例:
//模拟一个算术运算
public enum OPeration
{
//列出所有实例,所有可能的实例(<strong>如果是普通方法,则应该写成:PLUS,SUB;</strong>)
<strong>//实际是创建实例,相当于调用无参数的构造器创建实例MALE(),如果没有无参数的构造器的话要传入相应的参数</strong>
//但是当枚举类是抽象类的时候,不能创建实例
//这时需要立即创建匿名内部类的实例
PLUS()
{
//匿名内部类需要重写抽象方法
public double eval(double x,double y)
{
return x+y;
}
},//注意此处是逗号
SUB()
{
public double eval(double x,double y)
{
return x*y;
}
};
//如果已经有抽象方法,则枚举类就默认有abstract修饰。
//此时该枚举类没有final修饰
public abstract double eval(double x,double y);
public static void main(String [] args)
{
System.out.println(OPeration.PLUS.eval(2.3,5.6));
}
}
3、实现接口的枚举类?
[语法】:【修饰符】 enum 枚举类名 implements 父接口 { 实现类体 }
a、枚举类也可以实现一个或多个接口。
1、实现接口包含的所有抽象方法,此时的枚举是普通的枚举。
2、如果没有全部实现抽象方法,则在列出的枚举实例的时候要用到匿名类,并重写没有重写的抽象方法。
4、【注意点】
a、枚举类型都有一个value()方法,该方法返回所有的枚举实例。
b、在枚举类的类体力列出的实例中,前面的实例小,后面的大。
c、包含抽象方法的枚举类不用abstract显式的修饰,系统默认就是抽象的枚举类。
d、枚举类可以实现一个或者多个接口,但是默认继承的是java.lang.Enum类,而Object类是间接父类。
e、构造器只能是private修饰。
f、实例必须再第一行列出,默认添加了public static final 当含有抽象方法时,应该用匿名类重写抽象方法。
5、常用方法:
a、int compareTo();比较,在前返回负值,在后返回正值。
b.、String name():返回枚举的实例名称。
c、int ordinal();返回枚举实例所在的下标。
/
5