1、创建的枚举类默认就已经继承了java枚举enum,所以任何自己创建的枚举类都无法继承其他类。
2、在创建的枚举类中,创建实例必须放在最上面,创建的多个实例之间用逗号隔开。如果实例化常量没有初始化,系统会默认提供一个无参的构造方法。
/**
* @author shanyangyang
* @date 2020/3/1
*/
public enum Season {
SPING, SUMMMER, FALL, WINTER;
}
3、如果创建的实例有默认的初始化值,则在枚举类中需要提供私有的带有参数的构造函数,private可以省略不写。
/**
* @author shanyangyang
* @date 2020/3/1
*/
public enum Season {
SPING("春天"), SUMMMER("夏天"), FALL("秋天"), WINTER("冬天");
private final String seansonName;
Season(String seansonName) {
this.seansonName = seansonName;
}
}
4、如果枚举类中有抽象方法,注意抽象方法要放在实例的后面。则每个实例都需要实现枚举类中的这个抽象方法。
public enum Season {
SPING("春天"){
@Override public String doPlay() {
return "春天";
}
},
SUMMMER("夏天"){
@Override public String doPlay() {
return "夏天";
}
},
FALL("秋天"){
@Override public String doPlay() {
return "秋天";
}
}, WINTER("冬天"){
@Override public String doPlay() {
return "冬天";
}
};
private final String seansonName;
Season(String seansonName) {
this.seansonName = seansonName;
}
public abstract String doPlay();
}
二、枚举类的初始化
下面的题目中,构造方法被调用了几次?
public enum AccountType {
SAVING, FIXED, CURRENT, MATH;
private AccountType() {
System.out.println("It is a AccountType");
}
public static void main(String[] args) {
System.out.println(AccountType.SAVING);
}
}
答案是四次,因为枚举类中每个属性的初始化,相当于调用构造函数创建一个属性对应的对象,上面的代码中有四个属性,所以构造函数会被调用四次。