枚举类enum

时间:2024-3-28    作者:老大夫    分类: JAVA


顾名思义 枚举类就是“枚举出来的类”,
例如:一年四季 season:spring、summer、autumn、winter 除此之外没有其他季节存在,确定类的数量的情况使用

常用在状态的表示,因为状态固定几个,都用数字表示的话分不清什么意思,这就用上枚举类了。也可以表示分类的类别。

jdk5.0之前的定义方法(了解即可):

class season{
    //2.声明属性变量
    private final String seasonName;
    private final String seasonDesc;

    //1.私有化构造器
    private season(String seasonName,String seasonDesc){
    this.seasonName=seasonName;
    this.seasonDesc=seasonDesc;
    }

    //3.实例变量的get方法,public外部可以调用
    public String getSeasonName(){
        return seasonName;
    }
    public String getSeasonDesc(){
        return seasonDesc;
    }

    //4.创建类的实例,需要 public(外部可以调用) static(自动创建对象) final(不许修改) 修饰
    public static final Season SPRING= new Season("春天","春暖花开");
    public static final Season SUMMER= new Season("夏天","夏日炎炎");
    public static final Season AUTUMN= new Season("秋天","秋高气爽");
    public static final Season WINTER= new Season("冬天","白雪皑皑");
}

可以看出来,枚举类实际上就是之中已经定义好的几个固定对象,数量固定,不允许修改。

jdk5.0加入的enum定义方法:

enum season{
    //1.直接就创建实例,不再需要修饰符号,类名,构造器。对象之间使用逗号隔开
    SPRING("春天","春暖花开"),
    SUMMER("夏天","夏日炎炎"),
    AUTUMN("秋天","秋高气爽"),
    WINTER("冬天","白雪皑皑");

    //2.声明属性变量
    private final String seasonName;
    private final String seasonDesc;

    //3.私有化构造器
    private season(String seasonName,String seasonDesc){
    this.seasonName=seasonName;
    this.seasonDesc=seasonDesc;
    }

    //4.实例变量的get方法,public外部可以调用
    public String getSeasonName(){
        return seasonName;
    }
    public String getSeasonDesc(){
        return seasonDesc;
    }

}

相较于jdk5.0之前的写法 enum枚举类定义,省略了枚举对象赋值步骤的前缀写法。
enum定义的类,其父类是java.lang.enum,不要再显示定义它的父类

enum类提供的方法

方法 返回值
String toString() 默认返回对象名(常量名)
String name() 得到枚举常量的名称
values() 把枚举类中所有对象返回到一个对象数组里
valueOf(String ObjectName) 根据对象名称(String)找出这个对象返回,如果找不到会报错
int ordinal() 返回当前枚举类的次序号

枚举类实现接口

情况1:枚举类实现接口,在枚举类中重写接口中的抽象方法,当不同的枚举对象调用此方法时,使用的时同一个方法。
情况2:想要每个对象的方法不同,枚举类实现接口后,分别给每个对象重写方法。
举例

interface info(){
    void show();
}

enum season implements info {
    //1.直接就创建实例,不再需要修饰符号,类名,构造器。对象之间使用逗号隔开
    SPRING("春天","春暖花开"){
        public void show(){
            system.out.println("这里是春天");
        }
    },
    SUMMER("夏天","夏日炎炎")
    public void show(){
            system.out.println("这里是夏天");
        },
    AUTUMN("秋天","秋高气爽")
    public void show(){
            system.out.println("这里是秋天");
        },
    WINTER("冬天","白雪皑皑")
    public void show(){
            system.out.println("这里是冬天");
        };

实际使用时

实际使用不需要定义属性构造器之类的,只需要规定几个枚举对象的话可以写得很简洁

public enum status{
    BUSSY,FREE,VOCATION,DIMISSION;
}

标签: 枚举 enum


扫描二维码,在手机上阅读

推荐阅读: