Java基础第二遍-枚举类

枚举类

  1. 简介
    1. 类的对象是有限个的,例如:星期:(星期1-星期7)
  2. 定义一组常量时,强烈建议使用枚举类
  3. 如果枚举类只有一个对象,那么可以作为单例模式实现

枚举类的使用

  1. 自定义枚举类
//jkd1.5以前实现枚举类
package com.bixiangdong.enum1;

public class Demo01 {
}
//自定义枚举类
class Season{
    //声明Season对象的属性private final
    private final String seasonName;
    private final String seasonDesc;

    //私有化类的构造器,并给对象属性赋值
    private Season(String seasonName,String seasonDesc){
        this.seasonName=seasonName;
        this.seasonDesc=seasonDesc;
    }
    //提供当前枚举类的多个对象,public static final
    public static final Season SPRING = new Season("春天","这是春天");
    public static final Season SUMMER = new Season("夏天","这是夏天");
    public static final Season AUTUME = new Season("秋天","这是秋天");
    public static final Season WINTER = new Season("冬天","这是冬天");
    
    //获取枚举类对象的属性

    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }

    @Override
    public String toString() {
        return "Season{" +
                "seasonName='" + seasonName + '\'' +
                ", seasonDesc='" + seasonDesc + '\'' +
                '}';
    }
}
  1. enum关键字
public class Demo02 {
}
//自定义枚举类,enum创建的枚举类自动继承,Enum
enum Season1{
    //提供当前枚举类的多个对象,简化了一些配置但本质还是public static final
    SPRING("春天","这是春天"),
    SUMMER("夏天","这是夏天"),
    AUTUME("秋天","这是秋天"),
    WINTER("冬天","这是冬天");
    //声明Season对象的属性private final
    private final String seasonName;
    private final String seasonDesc;

    //私有化类的构造器,并给对象属性赋值
    private Season1(String seasonName,String seasonDesc){
        this.seasonName=seasonName;
        this.seasonDesc=seasonDesc;
    }


    //获取枚举类对象的属性

    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }

    @Override
    public String toString() {
        return "Season{" +
                "seasonName='" + seasonName + '\'' +
                ", seasonDesc='" + seasonDesc + '\'' +
                '}';
    }
}
  1. Enum类的主要方法
    1. values();
    2. valueOf();
    3. toString();
package com.bixiangdong.enum1;

public class Demo02 {
    public static void main(String[] args) {
        //返回枚举类的所有对象,一数组的形式存储
        Season1[] values = Season1.values();
        //根据字符串获取对象的枚举对象 valueOf中大小写敏感
        Season1 spring = Season1.valueOf("SPRING");
        System.out.println(spring);
        //toString();返回当前对象名称
        System.out.println(Season1.AUTUME.toString());
    }
}
//自定义枚举类,enum创建的枚举类自动继承,Enum
enum Season1{
    //提供当前枚举类的多个对象,简化了一些配置但本质还是public static final
    SPRING("春天","这是春天"),
    SUMMER("夏天","这是夏天"),
    AUTUME("秋天","这是秋天"),
    WINTER("冬天","这是冬天");
    //声明Season对象的属性private final
    private final String seasonName;
    private final String seasonDesc;

    //私有化类的构造器,并给对象属性赋值
    private Season1(String seasonName,String seasonDesc){
        this.seasonName=seasonName;
        this.seasonDesc=seasonDesc;
    }


    //获取枚举类对象的属性

    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }

//    @Override
//    public String toString() {
//        return "Season{" +
//                "seasonName='" + seasonName + '\'' +
//                ", seasonDesc='" + seasonDesc + '\'' +
//                '}';
//    }
}
  1. 实现接口的枚举类
package com.bixiangdong.enum1;

public class Demo03 {
}
interface Test{
    void show();
}
//枚举类实现接口并重写方法,第一种重写的方法
enum Season2 implements Test{
    //提供当前枚举类的多个对象,简化了一些配置但本质还是public static final
    SPRING("春天","这是春天"),
    SUMMER("夏天","这是夏天"),
    AUTUME("秋天","这是秋天"),
    WINTER("冬天","这是冬天");
    //声明Season对象的属性private final
    private final String seasonName;
    private final String seasonDesc;

    //私有化类的构造器,并给对象属性赋值
    private Season2(String seasonName,String seasonDesc){
        this.seasonName=seasonName;
        this.seasonDesc=seasonDesc;
    }


    //获取枚举类对象的属性

    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }

    @Override
    public void show() {
        System.out.println("第一种重写的方法");
    }
}
//枚举类实现接口并重写方法,第一种重写的方法
enum Season3 implements Test{
    //提供当前枚举类的多个对象,简化了一些配置但本质还是public static final
    SPRING("春天","这是春天"){
        @Override
        public void show() {
            System.out.println("对象中重写,每个调用的都不一样");
        }
    },
    SUMMER("夏天","这是夏天"){
        @Override
        public void show() {
            System.out.println("对象中重写,每个调用的都不一样");
        }
    },
    AUTUME("秋天","这是秋天"){
        @Override
        public void show() {
            System.out.println("对象中重写,每个调用的都不一样");
        }
    },
    WINTER("冬天","这是冬天"){
        @Override
        public void show() {
            System.out.println("对象中重写,每个调用的都不一样");
        }
    };
    //声明Season对象的属性private final
    private final String seasonName;
    private final String seasonDesc;

    //私有化类的构造器,并给对象属性赋值
    private Season3(String seasonName,String seasonDesc){
        this.seasonName=seasonName;
        this.seasonDesc=seasonDesc;
    }


    //获取枚举类对象的属性

    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }
}
posted @ 2021-11-09 21:55  争取做百分之一  阅读(33)  评论(0)    收藏  举报