5.java 枚举类

方式一

// 自定义枚举类
public class SessonTest {
    /*
    *枚举类的使用
    * 1.枚举类的理解,类的对象只有有限个,确定的,我们称此类为枚举类
    * 2.当需要定义一组常量是,强烈建议使用枚举类
    * 3.如果枚举类中只有一个对象,则可以作为单例模式的实例方式
    * */
    public static void main(String[] args) {
        //
        System.out.println(Sesson.SPRING);
        System.out.println(Sesson.SPRING.getSessonDesc());
    }
    
}
// 枚举类
class Sesson{
    // 1.声明Season对象的属性,用private final 修饰
    private final String sessonName;
    private final  String sessonDesc;
    // 2.私有化类的构造器
    private Sesson(String sessonName,String sessonDesc){
        this.sessonDesc =sessonDesc;
        this.sessonName = sessonName;
    }
    //3. 提供当前枚举类的多个对象
    public static final Sesson  SPRING=new Sesson("春天","春暖花开");
    public static final Sesson  SUMMER=new Sesson("夏天","夏日炎炎");
    public static final Sesson  AUTUMN=new Sesson("秋天","秋高气爽");
    public static final Sesson  WINTER=new Sesson("冬天","冰天雪地");

    // 获取枚举类对象的属性
    public String getSessonDesc() {
        return sessonDesc;
    }

    public String getSessonName() {
        return sessonName;
    }
    // 提供toString ()
    public String toString(){
        return "Sesson["+"sessonName="+sessonName+"sessonDesc="+sessonDesc+"]";
    }

}

 方式二:使用enum 实现枚举类

import sun.applet.Main;

public class TestEnum {
    public static void main(String[] args) {
        System.out.println(Sesson1.class.getSuperclass());//查看其父类
        System.out.println(Sesson1.AUTUMN);
        System.out.println(Sesson1.AUTUMN.getSessonName());
        // values() 获取枚举类中全部的常量对象
        Sesson1[] values = Sesson1.values();
        for(int i=0;i<values.length;i++){
            System.out.println(values[i].getSessonName());
        }
        //valuesOf(String name)
        Sesson1 spring = Sesson1.valueOf("SPRING");
        System.out.println(spring);
    }
}
// 使用enum 关键字构建 枚举类,默认继承
enum Sesson1{
    //提供当前枚举类对象,多个对象之间用, 隔开,最后一个用;隔开
    SPRING("春天","春暖花开"),
    SUMMER("夏天","夏日炎炎"),
    AUTUMN("秋天","秋高气爽"),
    WINTER("冬天","冰天雪地");
    private final String sessonName;
    private final  String sessonDesc;

    // 2.私有化类的构造器
    private Sesson1(String sessonName,String sessonDesc){
        this.sessonDesc =sessonDesc;
        this.sessonName = sessonName;
    }
    //3. 提供当前枚举类的多个对象

    // 获取枚举类对象的属性
    public String getSessonDesc() {
        return sessonDesc;
    }

    public String getSessonName() {
        return sessonName;
    }
    // 提供toString ()
    public String toString(){
        return "Sesson["+"sessonName="+sessonName+"sessonDesc="+sessonDesc+"]";
    }

}

 方式三 :enum 实现接口的枚举类

1. 各对象实现同一功能接口时:

 

import sun.applet.Main;

public class TestEnum {
    public static void main(String[] args) {
        System.out.println(Sesson1.class.getSuperclass());//查看其父类
        System.out.println(Sesson1.AUTUMN);
        System.out.println(Sesson1.AUTUMN.getSessonName());
        // values() 获取枚举类中全部的常量对象
        Sesson1[] values = Sesson1.values();
        for(int i=0;i<values.length;i++){
            System.out.println(values[i].getSessonName());
        }
        //valuesOf(String name)
        Sesson1 spring = Sesson1.valueOf("SPRING");
        System.out.println(spring);

        //
        spring.show();//这是一个季节
    }
}
interface Info{
    void show();
}
// 使用enum 关键字构建 枚举类,默认继承
enum Sesson1 implements Info{
    //提供当前枚举类对象,多个对象之间用, 隔开,最后一个用;隔开
    SPRING("春天","春暖花开"),
    SUMMER("夏天","夏日炎炎"),
    AUTUMN("秋天","秋高气爽"),
    WINTER("冬天","冰天雪地");
    private final String sessonName;
    private final  String sessonDesc;

    // 2.私有化类的构造器
    private Sesson1(String sessonName,String sessonDesc){
        this.sessonDesc =sessonDesc;
        this.sessonName = sessonName;
    }
    //3. 提供当前枚举类的多个对象

    // 获取枚举类对象的属性
    public String getSessonDesc() {
        return sessonDesc;
    }

    public String getSessonName() {
        return sessonName;
    }
    // 提供toString ()
    public String toString(){
        return "Sesson["+"sessonName="+sessonName+"sessonDesc="+sessonDesc+"]";
    }
   @Override
public void show(){ System.out.println("这是一个季节"); } }

 

2. 各对象用实现不同功能接口时:

import sun.applet.Main;

public class TestEnum {
    public static void main(String[] args) {
        System.out.println(Sesson1.class.getSuperclass());//查看其父类
        System.out.println(Sesson1.AUTUMN);
        System.out.println(Sesson1.AUTUMN.getSessonName());
        // values() 获取枚举类中全部的常量对象
        Sesson1[] values = Sesson1.values();
        for(int i=0;i<values.length;i++){
            System.out.println(values[i].getSessonName());
            values[i].show();
        }
        //valuesOf(String name)
        Sesson1 spring = Sesson1.valueOf("SPRING");
        System.out.println(spring);

        //
        spring.show();//这是一个季节
    }
}
interface Info{
    void show();
}
// 使用enum 关键字构建 枚举类,默认继承
enum Sesson1 implements Info{
    //提供当前枚举类对象,多个对象之间用, 隔开,最后一个用;隔开
    SPRING("春天","春暖花开"){
        @Override
        public void show () {
            System.out.println("春天在哪里");
        }

    },
    SUMMER("夏天","夏日炎炎"){
        @Override
        public void show () {
            System.out.println("夏天在哪里");
        }
    },
    AUTUMN("秋天","秋高气爽"){
        @Override
        public void show () {
            System.out.println("秋天在哪里");
        }
    },
    WINTER("冬天","冰天雪地"){
        @Override
        public void show () {
            System.out.println("冬天在哪里");
        }
    };
    private final String sessonName;
    private final  String sessonDesc;

    // 2.私有化类的构造器
    private Sesson1(String sessonName,String sessonDesc){
        this.sessonDesc =sessonDesc;
        this.sessonName = sessonName;
    }
    //3. 提供当前枚举类的多个对象

    // 获取枚举类对象的属性
    public String getSessonDesc() {
        return sessonDesc;
    }

    public String getSessonName() {
        return sessonName;
    }
    // 提供toString ()
    public String toString(){
        return "Sesson["+"sessonName="+sessonName+"sessonDesc="+sessonDesc+"]";
    }
//    public void show(){
//        System.out.println("这是一个季节");
//    }

}

 

posted @ 2020-07-19 18:48  冰底熊  阅读(29)  评论(0)    收藏  举报