Java-枚举类(学习笔记)

来源:互联网 发布:java 重定向 redirect 编辑:程序博客网 时间:2024/05/14 10:05

枚举:当程序运行时的数据不是任意的,而是一定范围的值时使用枚举。jdk5以前采用的是自定义的方法,jdk5以后采用枚举的方法。

一、枚举的使用简例

public class Demo{public void test(){print(Grade.B);//只能传ABCDE指定的五个值}public void print(Grade g){//A B C D E}}//jdk5以前的自定义方法class Grade{private Grade(){}public static final Grade A = new Grade();public static final Grade B = new Grade();public static final Grade C = new Grade();public static final Grade D = new Grade();public static final Grade E = new Grade();}//jdk5以后的枚举法
enum Grade{          A,B,C,D,E;//成绩等级,Grade相当于以前的类}

二、定义枚举的构造函数、字段和方法

//如何让设计出来的枚举拥有构造函数,拥有构造函数自带的方法以封装更多的信息public class Demo{public void test(){print(Grade.B);//只能传ABCDE指定的值}public void print(Grade g){//A B C D EString value = g.getValue();System.out.println(value);}}enum Grade{//A100-90   B89-80   C79-70   D69-60   E59-0A("100-90"),B("89-80"),C("79-70"),D("69-60"),E("59-0");//Grade相当于一个类,下面为类声明了一个有参的构造函数,不同于之前new出来的无参构造函数,所以new出来的对象需要加参数private String value;//封装每个对象对象的分数private Grade(String Value){this.value = value;}public String getValue(){return this.value;}}
三、带有抽象方法的枚举
//如何在枚举中设计一个方法,使得调用这个方法时得到中文成绩public class Demo{public void test(){print(Grade.B);//只能传ABCDE指定的值}public void print(Grade g){//A B C D EString value = g.localValue();System.out.println(value);}}enum Grade{//A100-90 优秀  B89-80良好    C79-70差   D69-60及格   E59-0不及格A("100-90"){//带有抽象方法的抽象类不能直接new出实例对象,需要在new时实现这个抽象方法public String localValue(){return("优秀");}},B("89-80"){public String localValue(){return("良好");}},C("79-70"){public String localValue(){return("差");}},D("69-60"){public String localValue(){return("及格");}},E("59-0"){public String localValue(){return("不及格");}};private String value;//封装每个对象的分数private Grade(String Value){this.value = value;}public String getValue(){return this.value;}public abstract String localValue();//把方法声明为抽象方法,调用时可以针对不同的数据返回不同的值}

四、枚举类的特性

1.枚举类也是一种特殊形式的Java类;

2.枚举类中声明的每一个枚举值代表枚举类的一个实例对象;

3.枚举类的构造函数必须是私有的;

4.枚举类可以实现接口、或继承抽象类;

5.若枚举类只有一个枚举值,则可以当作单例设计模式。

原创粉丝点击