枚举类
类一旦创建,则这个类的个数就确定了
public enum 类名{
}
特点:
1.枚举类也是一个类,限制了这个类对象的个数
2.必须在首行声明这个类有哪些对象
3.构造方法一定是私有
4.可以有抽象方法,在定义对象时,需实现抽象方法
demo:
Season.java
public enum Season {
// 必须在首行声明这个类有哪些对象
spring("春天") {
@Override
public void work() {
System.out.println("种下一个女朋友");
}
},
summer("夏天") {
@Override
public void work() {
System.out.println("浇水施肥");
}
},
fall("秋天") {
@Override
public void work() {
System.out.println("收货很多女朋友");
}
},
winter("冬天") {
@Override
public void work() {
System.out.println("......");
}
};
private String name;
public void speak() {
switch (this) {
case spring:
System.out.println("春暖花开");
break;
case summer:
System.out.println("烈日炎炎");
break;
case fall:
System.out.println("秋高气爽");
break;
case winter:
System.out.println("白雪皑皑");
break;
}
}
public abstract void work();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private Season() {
}
private Season(String name) {
this.name = name;
}
}
在首行声明了这个类只能有春夏秋冬四个对象
public abstract void work();
声明了一个抽象方法,并且让春夏秋冬四个对象实现了抽象方法
Main.java
public class Main {
public static void main(String[] args) {
Season.spring.speak();
Season.spring.work();
Season.summer.speak();
Season.summer.work();
Season.fall.speak();
Season.fall.work();
Season.winter.speak();
Season.winter.work();
Season[] season = Season.values();
for (Season s : season) {
s.work();
}
Season.valueOf("spring").work();
System.out.println(Season.spring.ordinal());// 返回对象的序号
}
}