java 枚举

北城余情 提交于 2020-02-18 00:56:30

1.枚举的基本概念
想一下,多设计模式,构造方法私有化(非 public),之后在类的内部存在若干个指定的对象,通过一个方法返回指定对象.

多设计模式

package class4;


class Color{
    private static final Color RED=new Color("红色");  //实例化对象
    private static final Color GREEN=new Color("绿色");  //实例化对象
    private static final Color BLUE=new Color("蓝色");   //实例化对象

    private String cname;
    public Color(String cname) {
        this.cname=cname;                 //构造方法私有化
    }
    public String toString(){
        return this.cname;
    }
    public static Color getInstance(int ch){  //取得实例化对象
        switch (ch){
            case 0:
                return RED;
            case 1:
                return GREEN;
            case 2:
                return BLUE;
             default:
                 return null;
        }
    }

}
public class Deao {
    public static void main(String[] args) {
        Color color=Color.getInstance(0);   //取得实例化对象
        System.out.println(color);
     }
}

运行结果
在JDK1. 5之后对于多列设计模式有了新的改进,使用新的关键字来进行定义------枚举(简化了多列设计模式),枚举使用enum关键字进行定义.
在这里插入图片描述

2.定义枚举
在这里插入图片描述
运行结果
运用枚举多列设计模式会更加直白,操作更为便捷.
在这里插入图片描述
3.在java中,枚举并不是一个新的类型,严格说,每一个使用enum定义的类实际上都属于一个类继承Enum父类而已,而java.lang.Enum类定义:

public abstract class Enum<E extends Enum<E>>
extends Object
implements Comparable<E>,Serializable

在Enum类之中定义了两个方法.
取得枚举的序号:public final int ordinal();
取得枚举的名称:public final String name();

在枚举中,可以利用values()方法取得枚举中的全部对象,并且可以利用foreach进行输出.
在这里插入图片描述
运行结果
验证了每一个枚举类都是Enum的子类.每一个枚举对象都是根据其定义的顺序进行编号,JDK1.5后,switch可以接受枚举类型的判断.
在这里插入图片描述
4.在switch中利用枚举判断.
在这里插入图片描述
运行结果
直接利用枚举进行switch中case的判断条件,这种对switch的支持,是多列设计模式所不支持的,
也是枚举方便之处.
在这里插入图片描述
5.枚举的其他定义.
枚举属于多列设计模式模式,类中肯定有多种组成,包括属性、方法和构造方法,在枚举中也同样可以定义以上内容,注意: 枚举类中定义的构造方法绝对不能是public,必须私有化(非public).除了这些外,枚举中的每一个定义的对象,必须写在枚举类的首行.

在枚举中定义其他结构.
在这里插入图片描述
运行结果
除了将属性、方法定义在了枚举中,其他的组成和普通类没有任何区别。
在这里插入图片描述
注意:枚举每个对象都要调用构造方法.
如果在枚举类中定义了有参构造,则声明每一个枚举对象时都必须明确的调用此构造方法,否则出现编译错误.

6.让枚举实现接口
在这里插入图片描述
可以在枚举中直接定义抽象方法,这就要求枚举中的每一个枚举对象分别实现抽象方法.

7.在枚举中定义抽象方法

package class4;

enum Color6{
    RED("红色"){
        public String getColor(){
            return this.toString();
        }
    } , //定义枚举对象,实现抽象方法
    GREEN("绿色"){
        public String getColor(){
            return this.toString();
        }
    },  //定义枚举对象,实现抽象方法

    BULE("蓝色"){
            public String getColor(){
                return this.toString();  //定义枚举对象,实现抽象方法
            }
        };
    private  String cname2;
    private  Color6(String cname2){
        this.cname2=cname2;
    }
    public String toString(){
        return this.cname2;
    }
    public abstract String getColor();   //抽象方法
    }


public class Deao5 {
    public static void main(String[] args) {
        System.out.println(Color6.RED.getColor());

    }

}

运行结果
在这里插入图片描述

8.枚举应用

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!