枚举就是用于描述对象个数有限的类型
单例设计模式,设计出来的是某个类型的对象只有一个;枚举类型就是有多个对象的单例设计模式,也可以成为多例模式
声明一个枚举类型,使用的关键字是enum,声明出来的也是一个类,编译出来也是一个.class的文件,只不过是补充了一些内容。
import java.util.Arrays;
public class Demo1 {
public static void main(String[] args) {
//分别调用每个枚举项中实现的不同的play()方法
WeekDays.MON.play();
WeekDays.TUS.play();
WeekDays.WEN.play();
WeekDays.THU.play();
WeekDays.FRI.play();
WeekDays.SAT.play();
WeekDays.SUN.play();
//获取枚举该枚举的所有枚举项
WeekDays[] values = WeekDays.values();
System.out.println(Arrays.toString(values));
}
}
enum WeekDays {
MON("星期一"){
@Override
public void play() {
System.out.println("玩 推箱子");
}
},
TUS("星期二"){
@Override
public void play() {
System.out.println("玩 贪吃蛇");
}
},
WEN("星期三"){
@Override
public void play() {
System.out.println("玩 超级玛丽");
}
},
THU("星期四"){
@Override
public void play() {
System.out.println("玩 王者农药");
}
},
FRI("星期五"){
@Override
public void play() {
System.out.println("玩 QQ飞车");
}
},
SAT("星期六"){
@Override
public void play() {
System.out.println("玩 消消乐");
}
},
SUN("星期天"){
@Override
public void play() {
System.out.println("玩 lol");
}
};
String name;
private WeekDays(String name) {
this.name = name;
}
public String getName() {
return name;
}
public abstract void play();
}
程序运行结果如图
使用枚举的注意事项:
1、定义枚举类型必须使用enum关键字,创建的其实也是一个普通的类型。
2、所有的枚举项,必须定义在枚举类型的第一行(第一个分号之前),枚举项之间使用逗号分隔,最后一个枚举项之后需要使用分号结尾
3、枚举类型也有构造方法,只能默认提供空参构造,需要我们手动定义有参构造。在枚举类型中,所有的构造方法,都必须 是私有化的。
4、枚举类型也可以有抽象方法,但是必须在枚举项中,将该方法实现。