一、枚举
1.定义
枚举是一个概念,列举的意思,将所有的情况都列举出来那么取值的时候只能是这几种情况的一种,不能是别的。
在java中枚举可以理解为有限制的多例,在当前类中定义多个实例供别人使用
2.应用场景
一个星期只有七天,我们就可以把这些字符串装在一个数组或者集合中供我们使用(这也是枚举),但是扩展性非常差,比如,我们想显示英文的就必须重写一次,使用枚举类来实现,就是将变量放到一个类中,然后限制的定义几个对象使用。
3.格式
空参构造的枚举类(没有意义)
public class Week {
public static final Week MON = new Week();
public static final Week TUE = new Week();
public static final Week WED = new Week();
public static final Week THU = new Week();
public static final Week FRI = new Week();
public static final Week SAT = new Week();
public static final Week SUN = new Week();
}
有参构造的枚举类
public class Week {
public static final Week MON = new Week("星期一");
public static final Week TUE = new Week("星期二");
public static final Week WED = new Week("星期三");
public static final Week THU = new Week("星期四");
public static final Week FRI = new Week("星期五");
public static final Week SAT = new Week("星期六");
public static final Week SUN = new Week("星期日");
private String name;
//私有化构造
private Week(String name){
this.name = name;
}
//提供getter方法,便于别人使用
public String getName() {
return name;
}
}
有方法的枚举类
public class Week {
public static final Week MON = new Week("星期一");
public static final Week TUE = new Week("星期二");
public static final Week WED = new Week("星期三");
public static final Week THU = new Week("星期四");
public static final Week FRI = new Week("星期五");
public static final Week SAT = new Week("星期六");
public static final Week SUN = new Week("星期日");
public String name;
//私有化构造
private Week(String name){
this.name = name;
}
//提供getter方法,便于别人使用
public String getName() {
return name;
}
//提供特殊方法
public void show(){
System.out.println("今天是"+name);
}
}
包含抽象方法的枚举类
public abstract class Week {
private static final Week MON = new Week("星期一"){
public void show(){
System.out.println("星期一好难受");
}
};
private static final Week TUE = new Week("星期二"){
public void show(){
System.out.println("星期二晕晕乎乎");
}
};
private static final Week WED = new Week("星期三"){
public void show(){
System.out.println("咦,星期三了...");
}
};
private static final Week THU = new Week("星期四"){
public void show(){
System.out.println("赶紧,赶紧,今天快点结束");
}
};
private static final Week FRI = new Week("星期五"){
public void show(){
System.out.println("哇,好棒,星期五了"