zoukankan      html  css  js  c++  java
  • 枚举

    通过自定义枚举类型再引出使用enum来定义枚举类型,使用enum来定义枚举简化了程序,并且提供了values()、valueOf()方法

    一、 自定义枚举类型

    二、       

      /*
    *
    自定义枚举:(季节类)
    *
    一、与常规定义类一样,定义季节类的属性(也要不可变),方法,
    *
    二、将构造器私有,并且通过构造器可以传入所有的属性,(方便后面创建对象)
    *
    三、创建枚举对象,对象也需要不可改变
    *
    与常规定义类的不同:一、在类中直接创建了对象
    *                 
    二、私有化构造方法
    *                  
    三、属性定义为不可变 ,创建的对象也不可变
    * */
    public class Season {
        //属性
       
    private final String name;//季节名称
       
    private final String desc;//季节描述
       
    private Season(String name,String desc){
            this.name=name;
            this.desc=desc;
        }
        public String getName() {
            return name;
        }
        public String getDesc() {
            return desc;
        }
        //创建枚举对象,权限为public
       
    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("冬天","白雪皑皑");

    }

    三、 使用enum来定义枚举类型

    通过上面的代码我们可以看到,在创建对象时代码大量重复,而使用enum后就优化了这一个问题,并且使用enum后对象必须放在类的前面,对象之间用逗号分隔,最后一个用分号

    public enum Season {
        //创建枚举对象
       
    SPRING("春天","春暖花开"),
        SUMMER("夏天","夏日炎炎"),
        AUTUMN("秋天","秋高气爽"),
        WINTER("冬天","白雪皑皑");
        //属性
       
    private final String name;//季节名称
       
    private final String desc;//季节描述
       
    private Season(String name,String desc){
            this.name=name;
            this.desc=desc;
        }
        public String getName() {
            return name;
        }
        public String getDesc() {
            return desc;
        }
    }

    四、 使用enum定义的常用方法(类方法),这些方法不需要我们去定义

    1、 Season [] values();将枚举对象以数组的形式返回

    2、 Season valueOf(String);返回对应的枚举对象,参数必须与对象名相对应

    3、 T valueOf(Class<T>,String); 返回对应的枚举对象,参数必须与对象名相对应

    五、 使用枚举类型实现接口

    分两种情况:一、与其他的类实现方法一样,这样所有的枚举对象调用该方法实现的效果一直

    二、所有的枚举对象都去实现该方法,这样每个对象调用该方法可以实现不同的效果,具体实现:(每个对象都要去实现)

    interface Info{
        void show();
    }
    public enum Season implements Info{
        //创建枚举对象
       
    SPRING("春天","春暖花开"){
            public void show(){}
        },
        SUMMER("夏天","夏日炎炎"){
            public void show(){}
        },
        AUTUMN("秋天","秋高气爽"){
            public void show(){}
        },
        WINTER("冬天","白雪皑皑"){
            public void show(){}
        };
    心有多大,天有多高,一起奋斗!!
  • 相关阅读:
    数据库
    poj上关于回文的题目
    最长上升子序列
    [CodeForces]914D Bash and a Tough Math Puzzle
    [HAOI2011]problem a
    Arc123 D
    [Cnoi2020]线性生物
    [USACO17FEB]Why Did the Cow Cross the Road III P
    ABC 210
    CF1111D Destroy the Colony
  • 原文地址:https://www.cnblogs.com/zhaolei1996/p/11299683.html
Copyright © 2011-2022 走看看