java枚举类学习

来源:互联网 发布:ipad屏幕录像软件 编辑:程序博客网 时间:2024/06/06 06:38

包含抽象方法的枚举类:

这个抽象方法由不同的枚举值提供不同的实现
    public abstract double eval(double x, double y);

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(3, 4));System.out.println(Operation.MINUS.eval(5, 4));System.out.println(Operation.TIMES.eval(5, 4));System.out.println(Operation.DIVIDE.eval(5, 4));}}

有构造器的枚举类:一旦为枚举类显式定义了带参数的构造器,列出枚举值时就必须对应地传入参数

public enum Gender{// 此处的枚举值必须调用对应构造器来创建MALE("男"),FEMALE("女");private final String name;// 枚举类的构造器只能使用private修饰private Gender(String name){this.name = name;}public String getName(){return this.name;}}

public class GenderTest{public static void main(String[] args){Gender g = Gender.valueOf("FEMALE");System.out.println(g + "代表:" + g.getName());// 此时设置name值时将会提示参数错误。System.out.println(g + "代表:" + g.getName());}}
实现接口的枚举类:

public interface GenderDesc{void info();}

public enum Gender implements GenderDesc{// 此处的枚举值必须调用对应构造器来创建MALE("男")// 花括号部分实际上是一个类体部分{public void info(){System.out.println("这个枚举值代表男性");}},FEMALE("女"){public void info(){System.out.println("这个枚举值代表女性");}};// 其他部分与codes\06\6.9\best\Gender.java中的Gender类完全相同private final String name;// 枚举类的构造器只能使用private修饰private Gender(String name){this.name = name;}public String getName(){return this.name;}// 增加下面的info()方法,实现GenderDesc接口必须实现的方法public void info(){System.out.println("这是一个用于用于定义性别的枚举类");}}

public class Test {public static void main(String[] args) {// TODO Auto-generated method stubGender gm = Gender.valueOf("MALE");gm.info();Gender gf = Gender.valueOf("FEMALE");gf.info();}}