关于枚举类 enum :
与正常类有什么区别呢?
1.枚举类继承了java.util.Enum 直接父类,但是他的根本还是Object类
2.枚举类的构造器只能使用pravite访问控制符
3.枚举类的所有实例必须在枚举类中显示出来,否则该枚举类永远不能产生实例。列出这些实例,系统会自动添加public static final 修饰符(常量)。
4.所有枚举类都提供了一个values 方法,该方法的返回值是枚举类型的数组。
5.枚举类没有继承,一般类可以。
可以参见实例代码:
package practice;
/**
* Created by fangjiejie on 2016/11/27.
*/
public class EnumClass {
public static void main(String[] args) {
System.out.println(ESeason.SPRING);//不必实例化可以直接调用,有几个实例就会调用几次构造器
ESeason.SPRING.go();//调用枚举类中的某个实例的方法
//遍历枚举类中的实例,并调用方法
for(ESeason a:ESeason.values()){
//所有枚举类都提供了一个values 方法,该方法的返回值一定是枚举类型的数据
a.go();
}
ESeason.values()[0].go();
}
}
/*****枚举类****/
enum ESeason{//默认继承了java.lang.Enum直接父类,但它的根本还是object类
SPRING,SUMMER,FALL,WINTER;
//有限个对象,每一个对象的都是由public static final 修饰的
//每个对象相当于ESeason SPRING=new Eseason
ESeason(){//枚举类的构造器必须是私有,枚举类是有限个对象,
// 如果公共的话就无限创造了,相矛盾了
System.out.println("构造器");
}
//区分枚举类中的各个对象
void go(){
switch (this){
case SPRING:System.out.println("春暖花开~");break;
case SUMMER:System.out.println("夏日炎炎~");break;
case FALL:System.out.println("秋风瑟瑟~");break;
case WINTER:System.out.println("冬雪皑皑~");break;
default:break;
}
}
}
//枚举类不能继承