枚举类
Posted yi-hui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了枚举类相关的知识,希望对你有一定的参考价值。
枚举类本质上也是一个类,不过对比普通的类枚举类有自己的一些特点。
1.使用enum定义的枚举类默认继承于java.lang.Enum,所以自定义的枚举类不能显式的继承其他类。
2.使用enum定义的非抽象的枚举类,默认使用final修饰,也就是说它不能有子类。
3.枚举类的构造器只能用private修饰,不显式指出的话,默认也为private,也就是说枚举类不允许外部创建实例。
4.枚举类的所有实例必须在枚举类的第一行显式列出,并且这些实例默认被public static final修饰,也就说实例一旦确定就不可变,并且可通过枚举类名直接获取。
一个超级简单的枚举类:
enum Season {
SPRING, SUMMER, FALL, WINTER;
}
下面是枚举类的一些用法:
1.在列举枚举实例的时候,可以像构造器传参(前提是有带参数的构造器)
enum Season {
SPRING("春天"), SUMMER("夏天"), FALL("秋天"), WINTER("冬天");
private String dec;
private Season(String dec) {
this.dec = dec;
}
public void getDec() {
System.out.println(dec);
}
}
2.枚举类实现接口
interface Dec {
void getDec();
}
可以这样实现:(所有实例同一行为)
enum Season implements Dec {
SPRING("春天"), SUMMER("夏天"), FALL("秋天"), WINTER("冬天");
private String dec;
private Season(String dec) {
this.dec = dec;
}
public void getDec() {
System.out.println(dec);
}
}
也可以这样:(不同实例不同行为)
enum Season implements Dec {
SPRING("春天") {
public void getDec() {
System.out.println("111");
}
},
SUMMER("夏天"){
public void getDec() {
System.out.println("222");
}
},
FALL("秋天"){
public void getDec() {
System.out.println("333");
}
},
WINTER("冬天"){
public void getDec() {
System.out.println("444");
}
};
private String dec;
private Season(String dec) {
this.dec = dec;
}
}
3.枚举类定义抽象方法
enum Season {
SPRING("春天") {
public void getDec() {
System.out.println("111");
}
},
SUMMER("夏天"){
public void getDec() {
System.out.println("222");
}
},
FALL("秋天"){
public void getDec() {
System.out.println("333");
}
},
WINTER("冬天"){
public void getDec() {
System.out.println("444");
}
};
private String dec;
private Season(String dec) {
this.dec = dec;
}
public abstract void getDec();
}
以上是关于枚举类的主要内容,如果未能解决你的问题,请参考以下文章