枚举类与注解4-使用enum关键字定义的枚举类实现接口

enum关键字定义的枚举类实现接口的几种情况
1、实现接口,在enum类中实现(重写)抽象方法

2、让枚举类的对象分别实现接口中的抽象方法


代码示例:

public class seasonTest1 {

    public static void main(String[] args) {

        Season1 summer = Season1.SUMMER;

        System.out.println(summer);//Season{seasonName='Summer', seasonDesc='hot'}

        System.out.println(summer.getClass());//class com.study.lele.Season1

        System.out.println(summer.getSeasonDesc());//hot

        //values()

        Season1[] values = Season1.values();

        for(int i =0; i < values.length; i++){

            System.out.println(values[i]);//Season{seasonName='Spring',             seasonDesc='warm'}...Season{seasonName='Winter', seasonDesc='cold'}

            values[i].show();

}

        Thread.State[] state = Thread.State.values();

        for(int i =0; i < values.length; i++){

            System.out.println(state[i]);//NEW、RUNNABLE、BLOCKED、WATING

        }

        //ValueOf(String str):返回枚举类中对象名是str的对象

        Season1 winter = Season1.valueOf("WINTER");//Season{seasonName='Winter', seasonDesc='cold'}

        System.out.println(winter);//WINTER

        winter.show();

    }

}

interface Info{

        void show();

}

//使用enum定义枚举类

//定义的枚举类默认继承Enum类,重写toString后,就不再继承Enum类了

enum Season1implements Info{

//1、提供当前枚举类的对象,用,间隔,最后一个用;

    SPRING("Spring","warm"){

//情况2:让枚举类的对象分别实现接口中的抽象方法

        @Override

        public void show() {

        System.out.println("Spring is warm");

    }

},

    SUMMER("Summer","hot"){

//情况2:让枚举类的对象分别实现接口中的抽象方法

        @Override

        public void show() {

            System.out.println("You can swim in summer");

        }

},

AUTOMN("Automn","cool"){

//情况2:让枚举类的对象分别实现接口中的抽象方法

        @Override

        public void show() {

            System.out.println("Austom is golden");

    }

},

WINTER("Winter","cold"){

//情况2:让枚举类的对象分别实现接口中的抽象方法

        @Override

        public void show() {

            System.out.println("Winter is so cold");

}

};

//2、声明Season对象的属性:private final来修饰

    private final StringseasonName;

    private final StringseasonDesc;

//3、私有化类的构造器

    private Season1(String seasonName, String seasonDesc){

        this.seasonName = seasonName;

        this.seasonDesc = seasonDesc;

}

//4、其他需求:获取没去类对象的属性

    public String getSeasonName() {

        return seasonName;

}

    public String getSeasonDesc() {

        return seasonDesc;

}

//4.其他需求:提供toString方法

    @Override

    public String toString() {

        return "Season{" +

        "seasonName='" +seasonName +'\'' +

        ", seasonDesc='" +seasonDesc +'\'' +

    '}';

}

//情况一:在enum类中实现抽象方法

//    @Override

//    public void show() {

//        System.out.println("This is a season~");

//    }

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容