enum关键字定义的枚举类实现接口的几种情况
1、实现接口,在enum类中实现(重写)抽象方法
2、让枚举类的对象分别实现接口中的抽象方法
代码示例:
public class seasonTest1 {
public static void main(String[] args) {
Season1 summer = Season1.SUMMER;
System.out.println(summer);//Season{seasonName='Summer', seasonDesc='hot'}
System.out.println(summer.getClass());//class com.study.lele.Season1
System.out.println(summer.getSeasonDesc());//hot
//values()
Season1[] values = Season1.values();
for(int i =0; i < values.length; i++){
System.out.println(values[i]);//Season{seasonName='Spring', seasonDesc='warm'}...Season{seasonName='Winter', seasonDesc='cold'}
values[i].show();
}
Thread.State[] state = Thread.State.values();
for(int i =0; i < values.length; i++){
System.out.println(state[i]);//NEW、RUNNABLE、BLOCKED、WATING
}
//ValueOf(String str):返回枚举类中对象名是str的对象
Season1 winter = Season1.valueOf("WINTER");//Season{seasonName='Winter', seasonDesc='cold'}
System.out.println(winter);//WINTER
winter.show();
}
}
interface Info{
void show();
}
//使用enum定义枚举类
//定义的枚举类默认继承Enum类,重写toString后,就不再继承Enum类了
enum Season1implements Info{
//1、提供当前枚举类的对象,用,间隔,最后一个用;
SPRING("Spring","warm"){
//情况2:让枚举类的对象分别实现接口中的抽象方法
@Override
public void show() {
System.out.println("Spring is warm");
}
},
SUMMER("Summer","hot"){
//情况2:让枚举类的对象分别实现接口中的抽象方法
@Override
public void show() {
System.out.println("You can swim in summer");
}
},
AUTOMN("Automn","cool"){
//情况2:让枚举类的对象分别实现接口中的抽象方法
@Override
public void show() {
System.out.println("Austom is golden");
}
},
WINTER("Winter","cold"){
//情况2:让枚举类的对象分别实现接口中的抽象方法
@Override
public void show() {
System.out.println("Winter is so cold");
}
};
//2、声明Season对象的属性:private final来修饰
private final StringseasonName;
private final StringseasonDesc;
//3、私有化类的构造器
private Season1(String seasonName, String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
//4、其他需求:获取没去类对象的属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
//4.其他需求:提供toString方法
@Override
public String toString() {
return "Season{" +
"seasonName='" +seasonName +'\'' +
", seasonDesc='" +seasonDesc +'\'' +
'}';
}
//情况一:在enum类中实现抽象方法
// @Override
// public void show() {
// System.out.println("This is a season~");
// }
}