58-15枚举

42 阅读2分钟
package itheima01;
一个类的对象只有固定的几个不可改变的 红 绿 黄
/*      (1)枚举中的常量名字大写,多个常量之间逗号分开,最后一个常量可以写分号
    	(2)每一个常量,都表示这个类的对象。
    	(3)枚举常量修饰符为public static final(不需要自己写,也不能写)
    	(4)枚举中有默认的无参数的private修饰的构造方法,如果手写构造方法,也必须是私有修饰的
    	(5)构造方法必须写在常量的后面,这时最后一个常量就必须要写分号
    	 枚举类的values方法是一个特殊方法(内置方法), 获取到的是该枚举类中的对象数组
    	  枚举的使用 由于枚举的常量为静态修饰可以直接枚举名.调用
    	  枚举是引用数据类型,和类,接口是一个级别的
 */
public enum Light01 {
    //3.需要给该类提供3个固定的对象: 每个对象都有一个编号,从0开始
    RED("红灯", "必须停"),//调用有参构造方法
    GREEN("绿灯", "行"),
    YELLOW("黄灯", "等一等"),
    BLUE();//调用空参构造方法 
    //1.因为每个对象中都有对应的属性
    private String COLOR;
    private String INFO; 
    //2.通过构造方法给属性赋值,构造方法private修饰,不允许外部创建该类的其它对象
    private Light01(String COLOR, String INFO) {
        this.COLOR = COLOR;
        this.INFO = INFO;
    } 
    private Light01(){} 
    //4.方便查看数据,覆盖重写toString方法
    @Override
    public String toString() {
        return "Light01{" +
                "COLOR='" + COLOR + '\'' +
                ", INFO='" + INFO + '\'' +
                '}';
    }

    //5.方法获取对象中的属性信息,提供get方法
    //每个对象中的属性信息,不允许修改,不能提供set方法
    public String getCOLOR() {
        return COLOR;
    }

    public String getINFO() {
        return INFO;
    }
}
public class Demo01Light01 {
    public static void main(String[] args) {
        //每一个常量,都表示这个类的对象。
        Light01 red = Light01.RED;
        //利用反射证明该对象的所属枚举的名称就是Light01
        System.out.println(red.getClass().getName());
        System.out.println("------------");

        //重写toString打印内容
        //不重写toString打印"GREEN",说明自定义枚举类没有继承Object
        //自定义枚举类继承Enum,Enum中有toString方法,返回枚举的名称
        System.out.println(Light01.GREEN);

        //Enum类中的ordinal方法,返回枚举对象的编号
        System.out.println(Light01.RED.ordinal());//0
        System.out.println(Light01.GREEN.ordinal());//1
        System.out.println(Light01.YELLOW.ordinal());//2
        System.out.println("-------------");
        
        //values方法获取枚举中的所有对象数组
        Light01[] values = Light01.values();
        
        //遍历
        for (Light01 value : values) {
            System.out.println("编号: " + (value.ordinal() + 1) + "名称: " + value.name() + ", 颜色: " + value.getCOLOR() + ", 信息: " + value.getINFO());
        }

    }
}